internal/cmd/weave: print two levels of headings in TOC Print up to two levels of headings, independent of the root depth of the table of contents. Change-Id: I75c07a5983b2af2639ebb9bf76e4189a7b114143 Reviewed-on: https://go-review.googlesource.com/c/example/+/703975 Auto-Submit: Robert Findley <rfindley@google.com> Reviewed-by: Alan Donovan <adonovan@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/internal/cmd/weave/weave.go b/internal/cmd/weave/weave.go index 20d16ea..ce983cc 100644 --- a/internal/cmd/weave/weave.go +++ b/internal/cmd/weave/weave.go
@@ -9,7 +9,7 @@ // exceptions: // // If a line begins with "%toc", it is replaced with a table of contents -// consisting of links to the top two levels of headers ("#" and "##"). +// consisting of links to the top two levels of headers below the %toc symbol. // // If a line begins with "%include FILENAME TAG", it is replaced with the lines // of the file between lines containing "!+TAG" and "!-TAG". TAG can be omitted, @@ -110,7 +110,11 @@ if line == "%toc" { toc = nil minTocDepth = 0 - } else if strings.HasPrefix(line, "# ") || strings.HasPrefix(line, "## ") { + } else if strings.HasPrefix(line, "# ") || + strings.HasPrefix(line, "## ") || + strings.HasPrefix(line, "### ") || + strings.HasPrefix(line, "#### ") { + words := strings.Fields(line) depth := len(words[0]) if minTocDepth == 0 || depth < minTocDepth { @@ -140,7 +144,10 @@ switch { case strings.HasPrefix(line, "%toc"): // ToC for _, h := range toc { - printf("%s1. [%s](#%s)\n", strings.Repeat("\t", h.depth-minTocDepth), h.text, h.anchor) + // Only print two levels of headings. + if h.depth-minTocDepth <= 1 { + printf("%s1. [%s](#%s)\n", strings.Repeat("\t", h.depth-minTocDepth), h.text, h.anchor) + } } case strings.HasPrefix(line, "%include"): words := strings.Fields(line)