diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index d0cc9b66d1508164e08b03d0e667b18b56dee3ca..f182564342c0051ee185b5751592fe8f8da29625 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -6,6 +6,10 @@ For a detailed view of what's changed, refer to the {url-repo}/commits[commit hi == Unreleased +=== Changed + +* drop fragment from page link if fragment matches document ID (#125) + === Fixed * preserve xref syntax from source document to ensure text and (where applicable) attributes are parsed propertly (#124) diff --git a/packages/assembler/lib/produce-assembly-file.js b/packages/assembler/lib/produce-assembly-file.js index e8dafac1f91b5d6f433c13d610e1bfe786a4334d..9d35536b25f0c294a5ae72854e3cc304d048d4d9 100644 --- a/packages/assembler/lib/produce-assembly-file.js +++ b/packages/assembler/lib/produce-assembly-file.js @@ -440,6 +440,7 @@ function mergeAsciiDoc ( } if (targetModule !== 'ROOT') relativePart = `${targetModule}${idCoordinateSeparator}${relativePart}` relativePart = relativePart.replace(/\.adoc$/, '').replace(/[/.]/g, '-') + if (fragment === resource.asciidoc.id) fragment = '' const refid = fragment ? `${relativePart}${idScopeSeparator}${fragment}` : relativePart + (ReservedIdNames.includes(relativePart) ? idScopeSeparator : '') diff --git a/packages/assembler/test/scenarios/rewrite-page-links/data.yml b/packages/assembler/test/scenarios/rewrite-page-links/data.yml index 6985ee02ec730f6e1799427bdcfc7f4a8c59b69a..012fce71a3ea442c1725c30e930a4f64abed60c3 100644 --- a/packages/assembler/test/scenarios/rewrite-page-links/data.yml +++ b/packages/assembler/test/scenarios/rewrite-page-links/data.yml @@ -20,7 +20,7 @@ files: This page follows the xref:header.adoc[Header]. - Also see xref:other-module:the-page.adoc[]. + Also see xref:other-module:the-page.adoc#top[]. Go back to the site to see xref:other-component::index.adoc[] and xref:imported-component::index.adoc[Imported Page]. @@ -30,6 +30,7 @@ files: - relative: the-page.adoc module: other-module contents: |- + [#top] = The Other Page content diff --git a/packages/test-harness/lib/load-scenario.js b/packages/test-harness/lib/load-scenario.js index 11ded962706c652bb19abb6130144d9dc4558931..a171de18fc444e51126b92f4a378c3970c2e899f 100644 --- a/packages/test-harness/lib/load-scenario.js +++ b/packages/test-harness/lib/load-scenario.js @@ -180,6 +180,10 @@ async function loadScenario (name, dirname) { const doctitleFile = { contents: doctitle, src: { relative: 'dummy.adoc' }, pub: { moduleRootPath: '' } } doctitle = loadAsciiDoc(doctitleFile, undefined, asciidocConfigForInlineOnly).convert() } + const docid = + contents.indexOf('[#') === 0 && contents.indexOf(']') < doctitleStart + ? contents.slice(2, contents.indexOf(']')).toString() + : undefined const navtitleIdx = contents.indexOf('\n:navtitle: ') const navtitle = ~navtitleIdx ? contents @@ -187,7 +191,7 @@ async function loadScenario (name, dirname) { .toString() .split('\n')[0] : doctitle - Object.assign(asciidoc, { doctitle, navtitle, xreftext: doctitle }) + Object.assign(asciidoc, { doctitle, navtitle, xreftext: doctitle, id: docid }) } else { Object.assign(asciidoc, { doctitle: 'Untitled', navtitle: 'Untitled', xreftext: 'Untitled' }) }