64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
import fs from 'fs';
|
|
import { Fragment, fragmentFormats } from "../struct/fragment.js";
|
|
import { BasePaths } from "./base-paths.js";
|
|
import { FileHelper } from './file-helper.js';
|
|
|
|
const TemplateSuperManager = {
|
|
templates: null,
|
|
initalized: false,
|
|
|
|
initialize() {
|
|
const templateDir = BasePaths.templates();
|
|
const entries = fs.readdirSync(templateDir, { encoding: 'utf-8', withFileTypes: true });
|
|
const templateEntries = entries.filter(
|
|
(e) => FileHelper.isFragment(e)
|
|
);
|
|
|
|
let templates = [];
|
|
|
|
for(let i = 0; i < templateEntries.length; i++) {
|
|
const type = FileHelper.getFragmentType(templateEntries[i]);
|
|
const path = templateEntries[i].parentPath + '/' + templateEntries[i].name;
|
|
const contents = fs.readFileSync(path, { encoding: 'utf-8' });
|
|
|
|
const template = new Fragment(type, contents);
|
|
|
|
const name = FileHelper.getBaseName(templateEntries[i]);
|
|
|
|
templates.push({
|
|
name: name,
|
|
template: template
|
|
});
|
|
}
|
|
|
|
this.templates = templates;
|
|
this.initialized = true;
|
|
},
|
|
|
|
get(key) {
|
|
if(!this.initalized) {
|
|
this.initialize();
|
|
}
|
|
|
|
const match = this.templates.find(
|
|
(t) => t.name === key
|
|
);
|
|
|
|
return match?.template;
|
|
}
|
|
}
|
|
|
|
export class TemplateManager {
|
|
_templateSuperManager;
|
|
|
|
constructor() {
|
|
this._templateSuperManager = TemplateSuperManager;
|
|
if(!TemplateSuperManager.initalized) {
|
|
TemplateSuperManager.initialize();
|
|
}
|
|
}
|
|
|
|
get(key) {
|
|
return this._templateSuperManager.get(key);
|
|
}
|
|
} |