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.

47 lines (46 loc) 1.99 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFirstLineOrDefault = exports.textToLinesArray = exports.removeMdCodeBlocks = void 0; var leftJoinSmallerThan = function (words, maxLen) { if (maxLen < 1) return ""; if (words.length < 1) return ""; var wordsString = words.join(" "); if (wordsString.length < maxLen) { return wordsString; } return leftJoinSmallerThan(words.slice(0, words.length - 1), maxLen); }; function getPostPreviewShortener(_a) { var previewLength = _a.previewLength; return function (data) { var _a; var preview = typeof ((_a = data === null || data === void 0 ? void 0 : data.attributes) === null || _a === void 0 ? void 0 : _a.description) !== 'undefined' ? data.attributes.description : exports.removeMdCodeBlocks(data.body); var getWordsInFirstLine = exports.getFirstLineOrDefault(exports.textToLinesArray(preview)).split(" "); var shortPreview = leftJoinSmallerThan(getWordsInFirstLine, previewLength); return __assign(__assign({}, data), { body: shortPreview + "..." }); }; } exports.default = getPostPreviewShortener; exports.removeMdCodeBlocks = function (mdText) { return mdText.replace(/(```[a-z]*\n[\s\S]*?\n```)/sg, ""); }; exports.textToLinesArray = function (text) { return text.match(/([^\n]+)\n/g); }; exports.getFirstLineOrDefault = function (preg, defaultText) { if (defaultText === void 0) { defaultText = "You'll need to click to know more"; } return preg !== null ? preg[0] : defaultText; };