UNPKG

@sohailalam2/markdown-extractor

Version:

Your one solution to extract markdown metadata and content

67 lines 2.47 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 }); 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