37 lines
717 B
JavaScript
37 lines
717 B
JavaScript
var fs = require('node:fs');
|
|
|
|
var variableRegExp = /\$([0-9a-zA-Z\.]+)/g;
|
|
|
|
module.exports = function renderFile(fileName, options, callback) {
|
|
function onReadFile(err, str) {
|
|
if (err) {
|
|
callback(err);
|
|
return;
|
|
}
|
|
|
|
try {
|
|
str = str.replace(variableRegExp, generateVariableLookup(options));
|
|
} catch (e) {
|
|
err = e;
|
|
err.name = 'RenderError'
|
|
}
|
|
|
|
callback(err, str);
|
|
}
|
|
|
|
fs.readFile(fileName, 'utf8', onReadFile);
|
|
};
|
|
|
|
function generateVariableLookup(data) {
|
|
return function variableLookup(str, path) {
|
|
var parts = path.split('.');
|
|
var value = data;
|
|
|
|
for (var i = 0; i < parts.length; i++) {
|
|
value = value[parts[i]];
|
|
}
|
|
|
|
return value;
|
|
};
|
|
}
|