UNPKG

@speedcubing/cookie

Version:

Speedcubing Online's UI design.

45 lines (44 loc) 1.53 kB
"use strict"; 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;