Skip to content

Instantly share code, notes, and snippets.

@th3terrorist
Created January 20, 2022 19:16
Show Gist options
  • Save th3terrorist/ea8374bb4e9145b5f926f9f550b5d0d2 to your computer and use it in GitHub Desktop.
Save th3terrorist/ea8374bb4e9145b5f926f9f550b5d0d2 to your computer and use it in GitHub Desktop.
Generate file names like a file manager
const generateNameInContext = (name, defaultName, namesContext) => {
if (!defaultName) {
defaultName = "Item";
}
if (!name) {
name = defaultName;
}
const fmtName = (number) => `${name}(${number})`;
let pattern = /\((.*?)\)$/; //used to find clone number in "<Name>(idx)"
if (namesContext.includes(name) === false) {
return name;
}
let cloneNumbers = namesContext
.map(n => [n, pattern.exec(n)])
.filter(([_, match]) => match)
.filter(([n, match]) => name === n.substring(0, match.index))
.map(([_, match]) => parseInt(match[1]));
if (cloneNumbers.length === 0) {
return fmtName(1);
}
let max = Math.max(...cloneNumbers);
return fmtName(max + 1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment