themer
Version:
Customizable theme creator for editors, terminals, wallpaper, and more.
33 lines • 1.5 kB
JavaScript
import { prepareColorSet } from './color-set/index.js';
import { resolveColorSet } from './color-set/all.js';
import { resolveTemplate } from './template/all.js';
import { noopTransform } from './transform/index.js';
export async function* themer(colorSets, templates, options, transform = noopTransform) {
for (const colorSet of colorSets) {
const resolvedColorSet = resolveColorSet(colorSet);
const fullColorSet = prepareColorSet(resolvedColorSet);
const resolvedTemplates = templates.map(resolveTemplate);
const instructions = [`# themer - ${fullColorSet.name}`];
const rootDir = fullColorSet.name;
for (const template of resolvedTemplates) {
const templatePaths = new Set();
for await (const renderedFile of template.render(fullColorSet, options)) {
for await (const file of transform(renderedFile)) {
const path = `${template.name}/${file.path}`;
yield {
...file,
path: `${rootDir}/${path}`,
};
templatePaths.add(path);
}
}
instructions.push(`## ${template.name}`);
instructions.push(template.renderInstructions([...templatePaths], fullColorSet).trim());
}
yield {
path: `${rootDir}/README.md`,
content: instructions.join('\n\n'),
};
}
}
//# sourceMappingURL=themer.js.map