From ea02c01dc52b176277d19872f0c296caf3dad20f Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 3 Jun 2025 02:52:15 -0600 Subject: [PATCH] resolves #97 add heading role to section when level is restricted --- CHANGELOG.adoc | 1 + packages/assembler/lib/produce-assembly-file.js | 7 ++++--- .../restrict-maximum-heading-level/expects/index.adoc | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 427aee4..e5eaf0d 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -18,6 +18,7 @@ For a detailed view of what's changed, refer to the {url-repo}/commits[commit hi * allow doctype of assembly to be set using `assembly.doctype` config key (instead of the `doctype` AsciiDoc attribute) * make separator used to scope IDs XML compliant using `assembly.xml_ids` config key (#94) * allow primary site URL to be set using `primary-site-url` attribute when site URL is not set +* add heading role to section when level is restricted (e.g., h7) (#97) === Changed diff --git a/packages/assembler/lib/produce-assembly-file.js b/packages/assembler/lib/produce-assembly-file.js index 89b99a8..df2d23d 100644 --- a/packages/assembler/lib/produce-assembly-file.js +++ b/packages/assembler/lib/produce-assembly-file.js @@ -236,7 +236,7 @@ function mergeAsciiDoc ( pageFragment = `#${idScope}` if (part && level === 1) level-- if ((heading = { title: navtitleAsciiDoc, level: level + 1 }).level > 6) { - Object.assign(heading, { level: 6, style: 'discrete' }) + Object.assign(heading, { level: 6, style: `discrete.h${heading.level}` }) } } } @@ -266,8 +266,9 @@ function mergeAsciiDoc ( } let hlevel = level + 2 if (hlevel > 6) { + const blockStyle = `discrete.h${hlevel}` hlevel = 6 - buffer.push(syntheticId ? `[discrete#${syntheticId}]` : '[discrete]') + buffer.push(syntheticId ? `[${blockStyle}#${syntheticId}]` : `[${blockStyle}]`) } else if (syntheticId) { buffer.push(`[#${syntheticId}]`) } @@ -469,8 +470,8 @@ function mergeAsciiDoc ( lines[idx] = lines[idx].replace(/^=+ (.+)/, (_, rest) => { let targetMarkerLength = block.level + 1 + level + (enclosed ? 1 : 0) if (targetMarkerLength > 6) { + blockStyle = `discrete.h${targetMarkerLength}` targetMarkerLength = 6 - blockStyle = 'discrete' } return '='.repeat(targetMarkerLength) + ' ' + rest }) diff --git a/packages/assembler/test/scenarios/restrict-maximum-heading-level/expects/index.adoc b/packages/assembler/test/scenarios/restrict-maximum-heading-level/expects/index.adoc index 41e7013..9c41b9f 100644 --- a/packages/assembler/test/scenarios/restrict-maximum-heading-level/expects/index.adoc +++ b/packages/assembler/test/scenarios/restrict-maximum-heading-level/expects/index.adoc @@ -41,7 +41,7 @@ contents [discrete#foo:::_nested] ====== Nested -[discrete#foo:::_section] +[discrete.h7#foo:::_section] ====== Section :docname: bar @@ -91,7 +91,7 @@ contents :page-origin-refname: v1.0 :page-origin-reftype: branch :page-origin-refhash: a00000000000000000000000000000000000000z -[discrete#buzz] +[discrete.h7#buzz] ====== Buzz contents -- GitLab