timetable-generator/utils/getScopedName.js

33 lines
1001 B
JavaScript

/* eslint-disable @typescript-eslint/no-var-requires */
const incstr = require("incstr");
const { getGeneratorData, saveGeneratorData } = require("./generatorHelpers");
const createUniqueIdGenerator = generatorIdentifier => {
const uniqIds = getGeneratorData(generatorIdentifier);
const generateNextId = incstr.idGenerator({
alphabet: "abcefghijklmnopqrstuvwxyzABCEFGHJKLMNOPQRSTUVWXYZ",
});
return name => {
if (!uniqIds[name]) {
uniqIds[name] = generateNextId();
saveGeneratorData(generatorIdentifier, uniqIds);
}
return uniqIds[name];
};
};
const localNameIdGenerator = createUniqueIdGenerator("localName");
const componentNameIdGenerator = createUniqueIdGenerator("componentName");
module.exports = (localName, resourcePath) => {
const componentName = resourcePath.split("/").slice(-2, -1)[0];
const localId = localNameIdGenerator(localName);
const componentId = componentNameIdGenerator(componentName);
return `${componentId}_${localId}`;
};