UNPKG

@vivliostyle/vfm

Version:

Custom Markdown syntax specialized in book authoring.

65 lines (64 loc) 2.4 kB
"use strict"; /** * derived from `remark-slug`. * original: Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com> * modified: 2021 and later is Akabeko * @license MIT * @see https://github.com/remarkjs/remark-slug */ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.mdast = void 0; var github_slugger_1 = __importDefault(require("github-slugger")); var mdast_util_to_string_1 = __importDefault(require("mdast-util-to-string")); var unist_util_select_1 = require("unist-util-select"); /** * Create slug from `id` or heading children. * @param heading Heading. * @param slugs Slugger. * @returns */ var createSlug = function (heading, slugger) { if (heading.data && heading.data.hProperties && heading.data.hProperties.id) { return slugger.slug(heading.data.hProperties.id, true); } // Create slug string with footnotes removed var children = __spreadArray([], heading.children, true); heading.children = heading.children.filter(function (child) { return child.type !== 'footnote'; }); var text = slugger.slug((0, mdast_util_to_string_1.default)(heading).replace(/<[^<>]*>/g, '')); heading.children = children; return text; }; /** * Process Markdown AST. * @returns Transformer. */ var mdast = function () { return function (tree) { var slugger = new github_slugger_1.default(); slugger.reset(); var headings = (0, unist_util_select_1.selectAll)('heading', tree); for (var _i = 0, headings_1 = headings; _i < headings_1.length; _i++) { var heading = headings_1[_i]; var id = createSlug(heading, slugger); if (!heading.data) { heading.data = {}; } if (!heading.data.hProperties) { heading.data.hProperties = {}; } heading.data.id = id; heading.data.hProperties.id = id; } }; }; exports.mdast = mdast;