Skip to content

Commit 60a6ceb

Browse files
add page numbers after ToC entries (#579)
1 parent 852640b commit 60a6ceb

File tree

5 files changed

+38
-7
lines changed

5 files changed

+38
-7
lines changed

css/print.css

+27
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Menu.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default function makeMenu(spec: Spec) {
2121
pinContainer.appendChild(pinHeader);
2222
pinContainer.appendChild(pinList);
2323

24-
const toc = Toc.build(spec, true);
24+
const toc = Toc.build(spec, { expandy: true });
2525

2626
const tocContainer = spec.doc.createElement('div');
2727
tocContainer.setAttribute('id', 'menu-toc');

src/Spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ export default class Spec {
582582
this.log('Building table of contents...');
583583

584584
if (this.opts.oldToc) {
585-
new Toc(this).build();
585+
new Toc(this).build(2);
586586
} else {
587587
({ js: tocJs, eles: commonEles } = makeMenu(this));
588588
}

src/Toc.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ export default class Toc {
88
this.spec = spec;
99
}
1010

11-
build() {
11+
build(maxDepth: number = Infinity) {
1212
if (this.spec.subclauses.length === 0) {
1313
return;
1414
}
1515

16-
const html = Toc.build(this.spec);
16+
const html = Toc.build(this.spec, { maxDepth });
1717
const tocContainer = this.spec.doc.createElement('div');
1818
tocContainer.setAttribute('id', 'toc');
1919
tocContainer.innerHTML = '<h2>Table of Contents</h2>' + html;
@@ -26,7 +26,11 @@ export default class Toc {
2626
this.spec.doc.body.setAttribute('class', bodyClass + ' oldtoc');
2727
}
2828

29-
static build(level: Spec | Clause, expandy?: boolean) {
29+
static build(level: Spec | Clause, { maxDepth = Infinity, expandy = false } = {}) {
30+
if (maxDepth <= 0) {
31+
return '';
32+
}
33+
3034
let html = '<ol class="toc">';
3135

3236
level.subclauses.forEach(sub => {
@@ -45,7 +49,7 @@ export default class Toc {
4549
html += '<span class="secnum">' + sub.number + '</span> ';
4650
}
4751
html += shorten(sub.titleHTML) + '</a>';
48-
if (sub.subclauses.length > 0) html += Toc.build(sub, expandy);
52+
if (sub.subclauses.length > 0) html += Toc.build(sub, { maxDepth: maxDepth - 1, expandy });
4953
html += '</li>';
5054
});
5155

test/baselines/generated-reference/clauses.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<li><span>Toggle pinning of the current clause</span><code>p</code></li>
99
<li><span>Jump to <i>n</i>th pin</span><code>1-9</code></li>
1010
</ul></div><div id="spec-container">
11-
<div id="toc"><h2>Table of Contents</h2><ol class="toc"><li><a href="#sec-intro" title="Intro">Intro</a><ol class="toc"><li><a href="#sec-intro2" title="Sub Intro">Sub Intro</a></li></ol></li><li><a href="#sec-clause" title="Clause Foo(a, b)"><span class="secnum">1</span> Clause Foo(<var>a</var>, <var>b</var>)</a><ol class="toc"><li><a href="#Foo" title="Sub Clause"><span class="secnum">1.1</span> Sub Clause</a></li></ol></li><li><a href="#sec-number" title="Explicit number"><span class="secnum">7</span> Explicit number</a><ol class="toc"><li><a href="#sec-number1" title="Automatic number inside explicit number"><span class="secnum">7.1</span> Automatic number inside explicit number</a></li><li><a href="#sec-number2" title="Nested explicit number"><span class="secnum">7.4</span> Nested explicit number</a></li><li><a href="#sec-number3" title="Automatic number after explicit number"><span class="secnum">7.5</span> Automatic number after explicit number</a></li><li><a href="#sec-number-nested" title="Multi-step explicit numbers"><span class="secnum">7.6</span> Multi-step explicit numbers</a><ol class="toc"><li><a href="#sec-number-multi-step" title="Multi-step explicit numbers"><span class="secnum">7.6.1.1</span> Multi-step explicit numbers</a></li><li><a href="#sec-number-multi-step-1" title="Automatic number after explicit number"><span class="secnum">7.6.1.2</span> Automatic number after explicit number</a><ol class="toc"><li><a href="#sec-number-multi-step-inner" title="Nested clause after explicit multi-step number"><span class="secnum">7.6.1.2.1</span> Nested clause after explicit multi-step number</a></li></ol></li><li><a href="#sec-number-multi-step-2" title="Increasing multi-step explicit numbers"><span class="secnum">7.6.2.1</span> Increasing multi-step explicit numbers</a></li></ol></li></ol></li><li><a href="#sec-annex" title="Annex"><span class="secnum">A</span> Annex</a><ol class="toc"><li><a href="#sec-annex2" title="Sub-annex"><span class="secnum">A.1</span> Sub-annex</a></li></ol></li></ol></div><emu-intro id="sec-intro">
11+
<div id="toc"><h2>Table of Contents</h2><ol class="toc"><li><a href="#sec-intro" title="Intro">Intro</a><ol class="toc"><li><a href="#sec-intro2" title="Sub Intro">Sub Intro</a></li></ol></li><li><a href="#sec-clause" title="Clause Foo(a, b)"><span class="secnum">1</span> Clause Foo(<var>a</var>, <var>b</var>)</a><ol class="toc"><li><a href="#Foo" title="Sub Clause"><span class="secnum">1.1</span> Sub Clause</a></li></ol></li><li><a href="#sec-number" title="Explicit number"><span class="secnum">7</span> Explicit number</a><ol class="toc"><li><a href="#sec-number1" title="Automatic number inside explicit number"><span class="secnum">7.1</span> Automatic number inside explicit number</a></li><li><a href="#sec-number2" title="Nested explicit number"><span class="secnum">7.4</span> Nested explicit number</a></li><li><a href="#sec-number3" title="Automatic number after explicit number"><span class="secnum">7.5</span> Automatic number after explicit number</a></li><li><a href="#sec-number-nested" title="Multi-step explicit numbers"><span class="secnum">7.6</span> Multi-step explicit numbers</a></li></ol></li><li><a href="#sec-annex" title="Annex"><span class="secnum">A</span> Annex</a><ol class="toc"><li><a href="#sec-annex2" title="Sub-annex"><span class="secnum">A.1</span> Sub-annex</a></li></ol></li></ol></div><emu-intro id="sec-intro">
1212
<h1>Intro</h1>
1313
<emu-intro id="sec-intro2">
1414
<h1>Sub Intro</h1>

0 commit comments

Comments
 (0)