UNPKG

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
"use strict"; 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;