fix: fragments checking should work in other elements than only anchor (e.g: <div>)

This commit is contained in:
Théo LUDWIG 2024-01-11 23:15:10 +01:00
parent a5deae599a
commit 747203c23b

View File

@ -100,11 +100,11 @@ const anchorNameRe = getHtmlAttributeRe("name")
const anchorIdRe = getHtmlAttributeRe("id") const anchorIdRe = getHtmlAttributeRe("id")
/** /**
* Gets the anchor HTML fragments from a Markdown string. * Gets the id or anchor name fragments from a Markdown string.
* @param {string} content * @param {string} content
* @returns {string[]} * @returns {string[]}
*/ */
const getMarkdownAnchorHTMLFragments = (content) => { const getMarkdownIdOrAnchorNameFragments = (content) => {
const markdownIt = new MarkdownIt({ html: true }) const markdownIt = new MarkdownIt({ html: true })
const tokens = markdownIt.parse(content, {}) const tokens = markdownIt.parse(content, {})
@ -112,13 +112,6 @@ const getMarkdownAnchorHTMLFragments = (content) => {
const result = [] const result = []
for (const token of tokens) { for (const token of tokens) {
if (token.type === "inline") {
if (!token.children) {
continue
}
for (const child of token.children) {
if (child.type === "html_inline") {
const anchorMatch = const anchorMatch =
anchorIdRe.exec(token.content) || anchorNameRe.exec(token.content) anchorIdRe.exec(token.content) || anchorNameRe.exec(token.content)
if (!anchorMatch || anchorMatch.length === 0) { if (!anchorMatch || anchorMatch.length === 0) {
@ -135,9 +128,6 @@ const getMarkdownAnchorHTMLFragments = (content) => {
result.push(anchorHTMLFragment) result.push(anchorHTMLFragment)
} }
} }
}
}
}
return result return result
} }
@ -146,5 +136,5 @@ module.exports = {
filterTokens, filterTokens,
convertHeadingToHTMLFragment, convertHeadingToHTMLFragment,
getMarkdownHeadings, getMarkdownHeadings,
getMarkdownAnchorHTMLFragments, getMarkdownAnchorHTMLFragments: getMarkdownIdOrAnchorNameFragments,
} }