@sohailalam2/markdown-extractor
Version:
Your one solution to extract markdown metadata and content
67 lines • 2.47 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 });
exports.parseMarkdown = void 0;
var cheerio_1 = require("cheerio");
var marked_1 = __importDefault(require("marked"));
var metadata_extractor_1 = require("./metadata-extractor");
var defaultOptions = {
selectors: [],
metadataDelimiter: '---',
cheerioOptions: {
ignoreWhitespace: true,
lowerCaseTags: true,
lowerCaseAttributeNames: true,
xmlMode: false,
},
};
function parseMarkdown(data, options) {
var opt = {
selectors: (options === null || options === void 0 ? void 0 : options.selectors) || [],
metadataDelimiter: (options === null || options === void 0 ? void 0 : options.metadataDelimiter) || defaultOptions.metadataDelimiter,
cheerioOptions: __assign(__assign({}, defaultOptions.cheerioOptions), ((options === null || options === void 0 ? void 0 : options.cheerioOptions) || {})),
};
var parsed = metadata_extractor_1.extract(data, opt.metadataDelimiter);
var html = marked_1.default(parsed.content);
var $ = cheerio_1.load(html, opt.cheerioOptions);
var content = opt.selectors
.map(function (domSelector) {
var selector = domSelector.selector, parseHtml = domSelector.parseHtml;
if (parseHtml) {
var parsedContent = $.html($(selector).next());
return {
selector: selector,
content: parsedContent,
};
}
return {
selector: selector,
content: $(selector).next().text().trim(),
};
})
.reduce(function (obj, val) {
var _a;
Object.assign(obj, (_a = {}, _a[val.selector] = val.content, _a));
return obj;
}, {});
return {
metadata: parsed.metadata,
content: content,
html: html,
};
}
exports.parseMarkdown = parseMarkdown;
//# sourceMappingURL=extractor.js.map