UNPKG

markdown-it-regex

Version:

Plugin for markdown-it, replaces strings that match a regular expression pattern.

70 lines (68 loc) 2.38 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { coreRuler: () => coreRuler, default: () => index_default, rendererRule: () => rendererRule }); module.exports = __toCommonJS(index_exports); var rendererRule = (tokens, idx, options) => { return options.replace(tokens[idx].content); }; var coreRuler = (state, options) => { for (let i = 0; i < state.tokens.length; i++) { if (state.tokens[i].type !== "inline") { continue; } let tokens = state.tokens[i].children; for (let j = tokens.length - 1; j >= 0; j--) { let token = tokens[j]; if (token.type === "text" && options.regex.test(token.content)) { const newTokens = token.content.split(options.regex).map((item, index) => ({ type: index % 2 === 0 ? "text" : options.name, content: item })).filter((item) => item.content.length > 0).map((item) => { const newToken = new state.Token(item.type, "", 0); newToken.content = item.content; return newToken; }); state.tokens[i].children = tokens = [ ...tokens.slice(0, j), ...newTokens, ...tokens.slice(j + 1) ]; } } } }; var regexPlugin = (md, options) => { md.renderer.rules[options.name] = (tokens, idx) => { return rendererRule(tokens, idx, options); }; md.core.ruler.push(options.name, (state) => { coreRuler(state, options); }); }; var index_default = regexPlugin; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { coreRuler, rendererRule });