very-small-parser
Version:
A very small Markdown, HTML, and CSS parser.
20 lines (19 loc) • 976 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.def = exports.hr = exports.urlInline = exports.title = exports.label = exports.replace = void 0;
const util_1 = require("../util");
const replace = (reg, map) => {
let source = reg.source;
for (const key in map)
source = (0, util_1.rep)(new RegExp(key, 'g'), map[key].source, source);
return new RegExp(source, reg.flags);
};
exports.replace = replace;
exports.label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/;
exports.title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
exports.urlInline = /(https?:\/\/)(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}(\.[a-z]{2,4})?\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=,\*]*)/;
exports.hr = /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/;
exports.def = (0, exports.replace)(/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/, {
label: exports.label,
title: exports.title,
});
;