md-toy-blog
Version:
Very simple Markdown blog: serves your md as html without fancy databases. You will only spend time writing the actual data.
54 lines (53 loc) • 2.57 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs_1 = __importDefault(require("fs"));
var MarkdownToHtmlService = /** @class */ (function () {
function MarkdownToHtmlService(_a) {
var fm = _a.fm, converter = _a.converter;
this.defaultPostPrivacy = "private";
this.fm = fm;
this.converter = converter;
}
MarkdownToHtmlService.prototype.extractFmAttributesAndHtmlBodyFromMd = function (postSlug, markdownFilePath, preHtmlCallback) {
var fm = this.fm;
var converter = this.converter;
var privacy = this.defaultPostPrivacy;
return new Promise(function (resolve, reject) {
fs_1.default.readFile(markdownFilePath, 'utf-8', function (err, fileContents) {
if (err)
return reject(err);
var data = fm(fileContents);
var attributes = (typeof data.attributes === 'undefined')
? { privacy: privacy }
: __assign({}, data.attributes);
var attributesWithSlug = __assign(__assign({}, attributes), { slug: postSlug, privacy: (attributes === null || attributes === void 0 ? void 0 : attributes.privacy) || privacy });
var fixNoLanguageBugFallbackToJS = function (body) {
return body.replace(/```\n([\s\S]*?\n)```/sg, "```text\n$1```");
};
var safeBody = fixNoLanguageBugFallbackToJS(data.body);
var dataBeforeCallback = __assign(__assign({}, data), { attributes: __assign({}, attributesWithSlug), body: safeBody });
var dataAfterCallback = preHtmlCallback
? preHtmlCallback(dataBeforeCallback)
: __assign({}, dataBeforeCallback);
return resolve(__assign(__assign({}, dataAfterCallback), { bodyHtml: converter.makeHtml(dataAfterCallback.body) }));
});
});
};
;
return MarkdownToHtmlService;
}());
exports.default = MarkdownToHtmlService;