mechanism-markdown
Version:
Markdown-to-HTML plugin for Mechanism
62 lines (46 loc) • 1.22 kB
JavaScript
;
var fs = require("fs");
var path = require("path");
var markdownit = require("markdown-it");
function handler(opt, opt2, cb) {
if (typeof opt2 === "function") {
cb = opt2;
opt2 = {};
};
opt = opt || {};
opt2 = opt2 || {};
function dump(error) {
error.plugin = "mechanism-markdown";
error.opt = opt;
error.opt2 = opt2;
return error;
};
var sources = opt.sources || [];
var targets = opt.targets || [];
var mkdirp = opt.shares.mkdirp;
if (sources.length !== 1) return cb(dump(
new Error("One source is required")
));
if (targets.length !== 1) return cb(dump(
new Error("One target is required")
));
fs.readFile(sources[0], function(error, md) {
if (error) return cb(dump(error));
var renderer = new markdownit();
var html = renderer.render(md.toString());
mkdirp(path.dirname(targets[0]), function(error) {
if (error) return cb(dump(error));
fs.writeFile(targets[0], html, function(error) {
if (error) return cb(dump(error));
return cb();
});
});
});
};
module.exports = function(opt2) {
return {
handler: function(opt, cb) {
handler(opt, opt2, cb);
}
};
};