forked from sashin/sashinexists
run npm install to generate a package lock
This commit is contained in:
59
node_modules/marked-gfm-heading-id/src/index.js
generated
vendored
Normal file
59
node_modules/marked-gfm-heading-id/src/index.js
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
import GithubSlugger from 'github-slugger';
|
||||
let slugger = new GithubSlugger();
|
||||
|
||||
let headings = [];
|
||||
|
||||
// unescape from marked helpers
|
||||
const unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
|
||||
/* istanbul ignore next */
|
||||
export function unescape(html) {
|
||||
// explicitly match decimal, hex, and named HTML entities
|
||||
return html.replace(unescapeTest, (_, n) => {
|
||||
n = n.toLowerCase();
|
||||
if (n === 'colon') return ':';
|
||||
if (n.charAt(0) === '#') {
|
||||
return n.charAt(1) === 'x'
|
||||
? String.fromCharCode(parseInt(n.substring(2), 16))
|
||||
: String.fromCharCode(+n.substring(1));
|
||||
}
|
||||
return '';
|
||||
});
|
||||
}
|
||||
|
||||
export function gfmHeadingId({ prefix = '', globalSlugs = false } = {}) {
|
||||
return {
|
||||
headerIds: false, // prevent deprecation warning; remove this once headerIds option is removed
|
||||
hooks: {
|
||||
preprocess(src) {
|
||||
if (!globalSlugs) {
|
||||
resetHeadings();
|
||||
}
|
||||
return src;
|
||||
},
|
||||
},
|
||||
useNewRenderer: true,
|
||||
renderer: {
|
||||
heading({ tokens, depth }) {
|
||||
const text = this.parser.parseInline(tokens);
|
||||
const raw = unescape(this.parser.parseInline(tokens, this.parser.textRenderer))
|
||||
.trim()
|
||||
.replace(/<[!\/a-z].*?>/gi, '');
|
||||
const level = depth;
|
||||
const id = `${prefix}${slugger.slug(raw.toLowerCase())}`;
|
||||
const heading = { level, text, id, raw };
|
||||
headings.push(heading);
|
||||
|
||||
return `<h${level} id="${id}">${text}</h${level}>\n`;
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export function getHeadingList() {
|
||||
return headings;
|
||||
}
|
||||
|
||||
export function resetHeadings() {
|
||||
headings = [];
|
||||
slugger = new GithubSlugger();
|
||||
}
|
||||
Reference in New Issue
Block a user