提交 5044744a 编写于 作者: K Krzysztof Cieslak

Add more separators and support for trailing zeros

上级 a707e00f
......@@ -1059,15 +1059,22 @@ function findValidPasteFileTarget(targetFolder: ExplorerItem, fileToPaste: { res
}
export function incrementFileName(name: string, isFolder: boolean): string {
const separators = '[\\.\\-_]';
// file.1.txt=>file.2.txt
if (!isFolder && name.match(/(.*\.)(\d+)(\..*)$/)) {
return name.replace(/(.*\.)(\d+)(\..*)$/, (match, g1?, g2?, g3?) => { return g1 + (parseInt(g2) + 1) + g3; });
let suffixFileRegex = RegExp('(.*' + separators + ')(\\d+)(\\..*)$');
if (!isFolder && name.match(suffixFileRegex)) {
return name.replace(suffixFileRegex, (match, g1?, g2?, g3?) => {
return g1 + strings.pad(parseInt(g2) + 1, g2.length) + g3;
});
}
// 1.file.txt=>2.file.txt
if (!isFolder && name.match(/(\d+)(\..*)(\..*)$/)) {
return name.replace(/(\d+)(\..*)(\..*)$/, (match, g1?, g2?, g3?) => { return (parseInt(g1) + 1) + g2 + g3; });
let prefixFileRegex = RegExp('(\\d+)(' + separators + '.*)(\\..*)$');
if (!isFolder && name.match(prefixFileRegex)) {
return name.replace(prefixFileRegex, (match, g1?, g2?, g3?) => {
return strings.pad(parseInt(g1) + 1, g1.length) + g2 + g3;
});
}
// file.txt=>file.1.txt
......@@ -1078,12 +1085,12 @@ export function incrementFileName(name: string, isFolder: boolean): string {
// folder.1=>folder.2
if (isFolder && name.match(/(\d+)$/)) {
return name.replace(/(\d+)$/, (match: string, ...groups: any[]) => { return String(parseInt(groups[0]) + 1); });
return name.replace(/(\d+)$/, (match: string, ...groups: any[]) => { return strings.pad(parseInt(groups[0]) + 1, groups[0].length); });
}
// 1.folder=>2.folder
if (isFolder && name.match(/^(\d+)/)) {
return name.replace(/^(\d+)/, (match: string, ...groups: any[]) => { return String(parseInt(groups[0]) + 1); });
return name.replace(/^(\d+)/, (match: string, ...groups: any[]) => { return strings.pad(parseInt(groups[0]) + 1, groups[0].length); });
}
// file/folder=>file.1/folder.1
......
......@@ -28,22 +28,106 @@ suite('Files - Increment file name', () => {
assert.strictEqual(result, 'test.2.js');
});
test('Increment file name with suffix version with trailing zeros', function () {
const name = 'test.001.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, 'test.002.js');
});
test('Increment file name with suffix version with trailing zeros, changing length', function () {
const name = 'test.009.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, 'test.010.js');
});
test('Increment file name with suffix version with `-` as separator', function () {
const name = 'test-1.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, 'test-2.js');
});
test('Increment file name with suffix version with `-` as separator, trailing zeros', function () {
const name = 'test-001.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, 'test-002.js');
});
test('Increment file name with suffix version with `-` as separator, trailing zeros, changnig length', function () {
const name = 'test-099.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, 'test-100.js');
});
test('Increment file name with suffix version with `_` as separator', function () {
const name = 'test_1.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, 'test_2.js');
});
test('Increment folder name with suffix version', function () {
const name = 'test.1';
const result = incrementFileName(name, true);
assert.strictEqual(result, 'test.2');
});
test('Increment folder name with suffix version, trailing zeros', function () {
const name = 'test.001';
const result = incrementFileName(name, true);
assert.strictEqual(result, 'test.002');
});
test('Increment folder name with suffix version with `-` as separator', function () {
const name = 'test-1';
const result = incrementFileName(name, true);
assert.strictEqual(result, 'test-2');
});
test('Increment folder name with suffix version with `_` as separator', function () {
const name = 'test_1';
const result = incrementFileName(name, true);
assert.strictEqual(result, 'test_2');
});
test('Increment file name with prefix version', function () {
const name = '1.test.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, '2.test.js');
});
test('Increment file name with prefix version, trailing zeros', function () {
const name = '001.test.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, '002.test.js');
});
test('Increment file name with prefix version with `-` as separator', function () {
const name = '1-test.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, '2-test.js');
});
test('Increment file name with prefix version with `-` as separator', function () {
const name = '1_test.js';
const result = incrementFileName(name, false);
assert.strictEqual(result, '2_test.js');
});
test('Increment folder name with suffix version', function () {
const name = '1.test';
const result = incrementFileName(name, true);
assert.strictEqual(result, '2.test');
});
test('Increment folder name with suffix version, trailing zeros', function () {
const name = '001.test';
const result = incrementFileName(name, true);
assert.strictEqual(result, '002.test');
});
test('Increment folder name with suffix version with `-` as separator', function () {
const name = '1-test';
const result = incrementFileName(name, true);
assert.strictEqual(result, '2-test');
});
});
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册