file name incrementing for files without extensions

This commit is contained in:
Nick Rayburn
2021-01-05 12:22:56 -06:00
parent 2d1b63d6a3
commit 9be7f7fb65
2 changed files with 57 additions and 1 deletions
@@ -379,6 +379,32 @@ export function incrementFileName(name: string, isFolder: boolean, incrementalNa
return `${name.substr(0, lastIndexOfDot)}.1${name.substr(lastIndexOfDot)}`;
}
// 123 => 124
let noNameNoExtensionRegex = RegExp('(\\d+)$');
if (!isFolder && lastIndexOfDot === -1 && name.match(noNameNoExtensionRegex)) {
return name.replace(noNameNoExtensionRegex, (match, g1?) => {
let number = parseInt(g1);
return number < maxNumber
? String(number + 1).padStart(g1.length, '0')
: `${g1}.1`;
});
}
// file => file1
// file1 => file2
let noExtensionRegex = RegExp('(.*)(\d*)$');
if (!isFolder && lastIndexOfDot === -1 && name.match(noExtensionRegex)) {
return name.replace(noExtensionRegex, (match, g1?, g2?) => {
let number = parseInt(g2);
if (isNaN(number)) {
number = 0;
}
return number < maxNumber
? g1 + String(number + 1).padStart(g2.length, '0')
: `${g1}${g2}.1`;
});
}
// folder.1=>folder.2
if (isFolder && name.match(/(\d+)$/)) {
return name.replace(/(\d+)$/, (match, ...groups) => {
@@ -258,7 +258,7 @@ suite('Files - Increment file name smart', () => {
assert.strictEqual(result, '2-test.js');
});
test('Increment file name with prefix version with `-` as separator', function () {
test('Increment file name with prefix version with `_` as separator', function () {
const name = '1_test.js';
const result = incrementFileName(name, false, 'smart');
assert.strictEqual(result, '2_test.js');
@@ -270,6 +270,36 @@ suite('Files - Increment file name smart', () => {
assert.strictEqual(result, '9007199254740992.test.1.js');
});
test('Increment file name with just version and no extension', function () {
const name = '001004';
const result = incrementFileName(name, false, 'smart');
assert.strictEqual(result, '001005');
});
test('Increment file name with just version and no extension, too big number', function () {
const name = '9007199254740992';
const result = incrementFileName(name, false, 'smart');
assert.strictEqual(result, '9007199254740992.1');
});
test('Increment file name with no extension and no version', function () {
const name = 'file';
const result = incrementFileName(name, false, 'smart');
assert.strictEqual(result, 'file1');
});
test('Increment file name with no extension', function () {
const name = 'file1';
const result = incrementFileName(name, false, 'smart');
assert.strictEqual(result, 'file2');
});
test('Increment file name with no extension, too big number', function () {
const name = 'file9007199254740992';
const result = incrementFileName(name, false, 'smart');
assert.strictEqual(result, 'file9007199254740992.1');
});
test('Increment folder name with prefix version', function () {
const name = '1.test';
const result = incrementFileName(name, true, 'smart');