@speedcubing/cookie
Version:
Speedcubing Online's UI design.
45 lines (44 loc) • 1.53 kB
JavaScript
;
exports.__esModule = true;
exports.engine = exports.getViewFolder = exports.getStaticFolder = exports.render = void 0;
var ejs = require("ejs");
var fs = require("fs");
var path = require("path");
/**
* Renders a component from the code base.
* @param file the filename/path of the file to render
* @param values the values to use while templating
*/
function render(file, values) {
file = file.endsWith('.ejs') ? file : file + '.ejs';
var filepath = path.resolve(path.join(__dirname, '../views', file));
// Check if file exists
if (fs.existsSync(filepath)) {
// Render file
var body = fs.readFileSync(filepath).toString();
// Add oreo library to values
values.oreo = {
render: render
};
return ejs.render(body, values);
}
return null;
}
exports.render = render;
function getStaticFolder() {
return path.resolve(path.join(__dirname, '../public'));
}
exports.getStaticFolder = getStaticFolder;
function getViewFolder() {
return path.resolve(path.join(__dirname, '../views'));
}
exports.getViewFolder = getViewFolder;
function engine(filepath, data, callback) {
filepath = path.resolve(path.join(__dirname, '../views', filepath.endsWith('.ejs') ? filepath : filepath + '.ejs'));
fs.readFile(filepath, function (err, contents) {
if (err)
return callback(err, null);
callback(null, ejs.render(contents), data);
});
}
exports.engine = engine;