34 lines
751 B
JavaScript
34 lines
751 B
JavaScript
|
const Eta = require('eta');
|
||
|
const fs = require('fs/promises');
|
||
|
const glob = require('glob');
|
||
|
|
||
|
const cwd = process.cwd();
|
||
|
const layoutdir = cwd + '/view';
|
||
|
|
||
|
let compiled = {};
|
||
|
|
||
|
|
||
|
async function loadFile(file) {
|
||
|
if (compiled[file]) return compiled[file];
|
||
|
compiled[file] = Eta.compile(await fs.readFile(file, 'utf8'));
|
||
|
|
||
|
return compiled[file];
|
||
|
}
|
||
|
|
||
|
|
||
|
async function preload() {
|
||
|
glob(layoutdir + '/*.eta', (err, files) => {
|
||
|
files.filter(file => {return !file.startsWith('.');})
|
||
|
.forEach(file => {
|
||
|
loadFile(file);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
async function load(name, data) {
|
||
|
return (await loadFile(cwd + '/view/' + name))(data, Eta.config);
|
||
|
}
|
||
|
|
||
|
|
||
|
module.exports = { load, loadFile, preload }
|