diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 427aee49a5b0b5f1901cf74d43f7e19fe02c5f3b..e5eaf0d1908a156a0addd8c0915c2fe4fa841af8 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 89b99a82905cb448d2aa25829f3a8e350f04afe0..df2d23d74dcb59d3d284ac794055c0dafa27e8fd 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 41e7013ff4ad021ac7fa8f6ee2ffd64f4766852b..9c41b9fd145f4d6a7cbf70def73f021b11190c86 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