doc: fix autoLink function, conversion of source links (#6056)

* doc: fix autoLink function, dont autolink from headers

* doc: fix conversion of source only links from md to html
This commit is contained in:
Jon Church
2025-12-04 14:28:43 -05:00
committed by GitHub
parent 9648f692b0
commit 4879a7a7d0

View File

@@ -34,11 +34,19 @@ const exts = _.keys(highlights);
/**
* Converts Lodash method references into documentation links.
*
* Searches for inline code references matching `_.word` (e.g., `_.map`, `_.filter`)
* in documentation body text and wraps them in anchor links. Excludes code within
* headers as those already have proper anchors.
*
* @private
* @param {Object} $ The Cheerio object.
*
* @example
* // Body text: <code>_.map</code> → <a href="#map"><code>_.map</code></a>
* // Headers: <h3><code>_.VERSION</code></h3> → unchanged (excluded)
*/
function autoLink($) {
$('.doc-container code').each(function() {
$('.doc-container code:not(:header code)').each(function() {
const $code = $(this);
const html = $code.html();
if (/^_\.\w+$/.test(html)) {
@@ -176,9 +184,16 @@ function build() {
.readFileSync(readmePath, 'utf8')
// Uncomment docdown HTML hints.
.replace(/(<)!--\s*|\s*--(>)/g, '$1$2')
// Convert source and npm package links to anchors.
.replace(/\[source\]\(([^)]+)\) \[npm package\]\(([^)]+)\)/g, (match, href1, href2) =>
`<p><a href="${ href1 }">source</a> <a href="${ href2 }">npm package</a></p>`
// Convert docdown-generated [source] and [npm package] links to HTML.
// These appear as markdown immediately after h3 tags, which marky-markdown
// doesn't process (it treats content after HTML blocks as plain text).
// Pattern 1: Dual links for methods with npm packages.
.replace(/(<h3[^>]*>.*?<\/h3>)\n\[source\]\(([^)]+)\) \[npm package\]\(([^)]+)\)/g, (match, h3, href1, href2) =>
`${h3}\n<p><a href="${ href1 }">source</a> <a href="${ href2 }">npm package</a></p>`
)
// Pattern 2: Standalone [source] links for properties without npm packages.
.replace(/(<h3[^>]*>.*?<\/h3>)\n\[source\]\(([^)]+)\)(?! \[npm package\])/g, (match, h3, href) =>
`${h3}\n<p><a href="${ href }">source</a></p>`
);
const $ = cheerio.load(marky(markdown, {