]> Cypherpunks repositories - gostls13.git/commitdiff
go/doc/headscan: update script to count headings with an ID attribute
authorEvan Kroske <evankroske@google.com>
Sat, 30 Aug 2014 17:27:36 +0000 (10:27 -0700)
committerRobert Griesemer <gri@golang.org>
Sat, 30 Aug 2014 17:27:36 +0000 (10:27 -0700)
Fixes script used to sanity-check the heading-detection heuristic of go/doc.
Fixes #8467.

LGTM=gri
R=golang-codereviews, gobot, gri
CC=golang-codereviews
https://golang.org/cl/128720043

src/pkg/go/doc/headscan.go

index f5593476382cacfb30a4c9ae6f9e0551c082f72c..1ccaa158194534c0fb0078d04d07410805967f97 100644 (file)
@@ -24,6 +24,7 @@ import (
        "go/token"
        "os"
        "path/filepath"
+       "regexp"
        "runtime"
        "strings"
 )
@@ -33,10 +34,10 @@ var (
        verbose = flag.Bool("v", false, "verbose mode")
 )
 
-const (
-       html_h    = "<h3>"
-       html_endh = "</h3>\n"
-)
+// ToHTML in comment.go assigns a (possibly blank) ID to each heading
+var html_h = regexp.MustCompile(`<h3 id="[^"]*">`)
+
+const html_endh = "</h3>\n"
 
 func isGoFile(fi os.FileInfo) bool {
        return strings.HasSuffix(fi.Name(), ".go") &&
@@ -47,11 +48,11 @@ func appendHeadings(list []string, comment string) []string {
        var buf bytes.Buffer
        doc.ToHTML(&buf, comment, nil)
        for s := buf.String(); ; {
-               i := strings.Index(s, html_h)
-               if i < 0 {
+               loc := html_h.FindStringIndex(s)
+               if len(loc) == 0 {
                        break
                }
-               i += len(html_h)
+               i := loc[1]
                j := strings.Index(s, html_endh)
                if j < 0 {
                        list = append(list, s[i:]) // incorrect HTML