// commentFn formats a source code comment as HTML. func commentFn(v string) htemp.HTML { var buf bytes.Buffer godoc.ToHTML(&buf, v, nil) p := buf.Bytes() p = replaceAll(p, h3Pat, func(out, src []byte, m []int) []byte { out = append(out, src[m[0]:m[1]-1]...) out = append(out, '4') return out }) p = replaceAll(p, rfcPat, func(out, src []byte, m []int) []byte { out = append(out, `<a href="http://tools.ietf.org/html/rfc`...) out = append(out, src[m[2]:m[3]]...) out = append(out, `">`...) out = append(out, src[m[0]:m[1]]...) out = append(out, `</a>`...) return out }) p = replaceAll(p, packagePat, func(out, src []byte, m []int) []byte { path := bytes.TrimRight(src[m[2]:m[3]], ".!?:") if !doc.IsValidPath(string(path)) { return append(out, src[m[0]:m[1]]...) } out = append(out, src[m[0]:m[2]]...) out = append(out, `<a href="/`...) out = append(out, path...) out = append(out, `">`...) out = append(out, path...) out = append(out, `</a>`...) out = append(out, src[m[2]+len(path):m[1]]...) return out }) return htemp.HTML(p) }
func documentTerms(pdoc *doc.Package, score float64) []string { terms := make(map[string]bool) // Project root projectRoot := normalizeProjectRoot(pdoc.ProjectRoot) terms["project:"+projectRoot] = true if strings.HasPrefix(pdoc.ImportPath, "code.google.com/p/go.") { terms["project:subrepo"] = true } // Imports for _, path := range pdoc.Imports { if doc.IsValidPath(path) { terms["import:"+path] = true } } if score > 0 { if isStandardPackage(pdoc.ImportPath) { for _, term := range parseQuery(pdoc.ImportPath) { terms[term] = true } } else { terms["all:"] = true for _, term := range parseQuery(pdoc.ProjectName) { terms[term] = true } for _, term := range parseQuery(pdoc.Name) { terms[term] = true } } // Synopsis synopsis := httpPat.ReplaceAllLiteralString(pdoc.Synopsis, "") for i, s := range strings.FieldsFunc(synopsis, isTermSep) { s = strings.ToLower(s) if !stopWord[s] && (i > 3 || s != "package") { terms[stem(s)] = true } } } result := make([]string, 0, len(terms)) for term := range terms { result = append(result, term) } return result }
func dangle(c *command) { if len(c.flag.Args()) != 0 { c.printUsage() os.Exit(1) } db, err := database.New() if err != nil { log.Fatal(err) } m := make(map[string]int) err = db.Do(func(pi *database.PackageInfo) error { m[pi.PDoc.ImportPath] |= 1 for _, p := range pi.PDoc.Imports { if doc.IsValidPath(p) { m[p] |= 2 } } for _, p := range pi.PDoc.TestImports { if doc.IsValidPath(p) { m[p] |= 2 } } for _, p := range pi.PDoc.XTestImports { if doc.IsValidPath(p) { m[p] |= 2 } } return nil }) for p, v := range m { if v == 2 { fmt.Println(p) } } }