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
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);
};
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;
};