From a186a5c93e55bb37acb033b58f10812479ffbcc5 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 24 Sep 2025 13:21:10 -0600 Subject: [PATCH] resolves #119 support assembly-navtitle override for doctitle when root level is 1 --- CHANGELOG.adoc | 2 ++ .../assembler/lib/produce-assembly-file.js | 10 +++++++- .../test/produce-assembly-files-test.js | 4 ++++ .../root-level-1-assembly-navtitle/data.yml | 23 +++++++++++++++++++ .../expects/a.adoc | 21 +++++++++++++++++ .../expects/b.adoc | 21 +++++++++++++++++ 6 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 packages/assembler/test/scenarios/root-level-1-assembly-navtitle/data.yml create mode 100644 packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/a.adoc create mode 100644 packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/b.adoc diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 8a134c5..bfb0a4f 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -36,6 +36,8 @@ For a detailed view of what's changed, refer to the {url-repo}/commits[commit hi === Changed * preserve block attributes (except for style and shorthands) on doctitle when adding page to assembly (#99) +* support assembly-navtitle override for doctitle when root level is 1 (#119) + === Fixed diff --git a/packages/assembler/lib/produce-assembly-file.js b/packages/assembler/lib/produce-assembly-file.js index bc4dd4c..6c4e601 100644 --- a/packages/assembler/lib/produce-assembly-file.js +++ b/packages/assembler/lib/produce-assembly-file.js @@ -147,7 +147,15 @@ function mergeAsciiDoc ( if (doc.hasAttribute('assembly-navtitle')) { navtitleAsciiDoc = doc.getAttribute('assembly-navtitle') navtitlePlain = sanitize((navtitle = doc.$apply_reftext_subs(navtitleAsciiDoc))) - if (buffer.inBody == null) buffer.navtitle = navtitle + if (buffer.inBody == null) { + buffer.navtitle = navtitle + // Q do we need to assert !level here? + if (assemblyModel.rootLevel) { + let doctitle = navtitleAsciiDoc + if (navtitlePlain !== componentVersion.title) doctitle = `${componentVersion.title}: ${doctitle}` + buffer[0] = `= ${doctitle}` + } + } } if (atDocumentRoot) { const authors = doc.getAuthors() diff --git a/packages/assembler/test/produce-assembly-files-test.js b/packages/assembler/test/produce-assembly-files-test.js index 4d22044..7d019a8 100644 --- a/packages/assembler/test/produce-assembly-files-test.js +++ b/packages/assembler/test/produce-assembly-files-test.js @@ -306,6 +306,10 @@ describe('produceAssemblyFiles()', () => { assert.equal(assemblyFiles[0].src.stem, 'the-page') }) + it('should use value of assembly-navtitle to override doctitle when root level is 1', async () => { + await runScenario('root-level-1-assembly-navtitle', __dirname) + }) + it('should process content in AsciiDoc table cell', async () => { await runScenario('process-asciidoc-table-cell', __dirname) }) diff --git a/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/data.yml b/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/data.yml new file mode 100644 index 0000000..a5896d0 --- /dev/null +++ b/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/data.yml @@ -0,0 +1,23 @@ +name: the-component +version: '1.0' +title: The Component +navigation: + items: + - content: xref:page-a.adoc[] + - content: xref:page-b.adoc[] +files: +- relative: page-a.adoc + contents: |- + = Page A + :assembly-navtitle: A + + contents +- relative: page-b.adoc + contents: |- + = Page B + :assembly-navtitle: B + + contents +assembler: + assembly: + rootLevel: 1 diff --git a/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/a.adoc b/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/a.adoc new file mode 100644 index 0000000..b6b100a --- /dev/null +++ b/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/a.adoc @@ -0,0 +1,21 @@ +[#page-a] += The Component: A +:revnumber: 1.0 +:doctype: book +:underscore: _ +:page-component-name: the-component +:page-component-version: 1.0 +:page-version: {page-component-version} +:page-component-display-version: 1.0 +:page-component-title: The Component + +:docname: page-a +:page-module: ROOT +:page-relative-src-path: page-a.adoc +:page-origin-url: https://github.com/acme/the-component +:page-origin-start-path: +:page-origin-refname: v1.0 +:page-origin-reftype: branch +:page-origin-refhash: a00000000000000000000000000000000000000z + +contents diff --git a/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/b.adoc b/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/b.adoc new file mode 100644 index 0000000..936bebd --- /dev/null +++ b/packages/assembler/test/scenarios/root-level-1-assembly-navtitle/expects/b.adoc @@ -0,0 +1,21 @@ +[#page-b] += The Component: B +:revnumber: 1.0 +:doctype: book +:underscore: _ +:page-component-name: the-component +:page-component-version: 1.0 +:page-version: {page-component-version} +:page-component-display-version: 1.0 +:page-component-title: The Component + +:docname: page-b +:page-module: ROOT +:page-relative-src-path: page-b.adoc +:page-origin-url: https://github.com/acme/the-component +:page-origin-start-path: +:page-origin-refname: v1.0 +:page-origin-reftype: branch +:page-origin-refhash: a00000000000000000000000000000000000000z + +contents -- GitLab