shikiml
Version:
Markup mathematical formulae by ASCII-art
54 lines (47 loc) • 1.5 kB
JavaScript
/**
* shikiml
*
* Copyright (c) 2017 Yuichiro MORIGUCHI
*
* This software is released under the MIT License.
* http://opensource.org/licenses/mit-license.php
**/
var fs = require('fs'),
pjson = JSON.parse(fs.readFileSync(__dirname + "/package.json", 'utf8'));
function I(x) {
return x;
}
function replaceTemplateFunction(template, setting, interprocess, postprocess) {
function replaceStr(str, prop) {
if(typeof setting[prop] === 'object') {
return JSON.stringify(setting[prop], null, 2);
} else {
return interprocess(setting[prop]);
}
}
return postprocess(template.replace(/@([^@\n]+)@/g, replaceStr));
}
function replaceTemplate(template, setting) {
return replaceTemplateFunction(template, setting, I, I);
}
function replaceTemplateRegExp(template, setting, opt) {
function escapeRE(x) {
var result = x;
result = result.replace(/\\/, "\\\\");
result = result.replace(/\//, "\\/");
return result;
}
function post(x) {
return new RegExp(x, opt);
}
return replaceTemplateFunction(template, setting, escapeRE, post);
}
function replaceTemplateFile(filename, setting) {
var template = fs.readFileSync(__dirname + "/" + filename, 'utf8');
return replaceTemplate(template, setting);
}
module.exports.replaceTemplate = replaceTemplate;
module.exports.replaceTemplateRegExp = replaceTemplateRegExp;
module.exports.replaceTemplateFile = replaceTemplateFile;
module.exports.version = pjson.version;
module.exports.isWindows = process.platform === 'win32';