]> Cypherpunks repositories - gostls13.git/commitdiff
publish doc.CommentText
authorRuss Cox <rsc@golang.org>
Wed, 16 Sep 2009 23:56:20 +0000 (16:56 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 16 Sep 2009 23:56:20 +0000 (16:56 -0700)
R=gri
DELTA=29  (10 added, 12 deleted, 7 changed)
OCL=34709
CL=34712

src/pkg/go/doc/comment.go
src/pkg/go/doc/doc.go

index de127ff4bd031d638c7dcf70e102e4e42d49333e..ae6ab53c31a8976dbf9cc0c10d83ef34d4fa3248 100644 (file)
@@ -8,6 +8,7 @@ package doc
 
 import (
        "fmt";
+       "go/ast";
        "io";
        "once";
        "regexp";
@@ -39,8 +40,17 @@ func setupRegexps() {
        comment_junk = makeRex("^[ \t]*(/\\*|\\*/)[ \t]*$");
 }
 
-// Aggregate comment text, without comment markers.
-func commentText(comments []string) string {
+// CommentText returns the text of comment,
+// with the comment markers - //, /*, and */ - removed.
+func CommentText(comment *ast.CommentGroup) string {
+       if comment == nil {
+               return "";
+       }
+       comments := make([]string, len(comment.List));
+       for i, c := range comment.List {
+               comments[i] = string(c.Text);
+       }
+
        once.Do(setupRegexps);
        lines := make([]string, 0, 20);
        for _, c := range comments {
index 0fcb7d8607aed03a1d2b626cc807aac6e0101da8..5f9429bb1a4fed9519a27892c4561f6351548741 100644 (file)
@@ -304,18 +304,6 @@ func NewPackageDoc(pkg *ast.Package, importpath string) *PackageDoc {
 // ----------------------------------------------------------------------------
 // Conversion to external representation
 
-func astComment(comment *ast.CommentGroup) string {
-       if comment != nil {
-               text := make([]string, len(comment.List));
-               for i, c := range comment.List {
-                       text[i] = string(c.Text);
-               }
-               return commentText(text);
-       }
-       return "";
-}
-
-
 // ValueDoc is the documentation for a group of declared
 // values, either vars or consts.
 //
@@ -363,7 +351,7 @@ func makeValueDocs(v *vector.Vector, tok token.Token) []*ValueDoc {
        for i := range d {
                decl := v.At(i).(*ast.GenDecl);
                if decl.Tok == tok {
-                       d[n] = &ValueDoc{astComment(decl.Doc), decl, i};
+                       d[n] = &ValueDoc{CommentText(decl.Doc), decl, i};
                        n++;
                        decl.Doc = nil;  // doc consumed - removed from AST
                }
@@ -395,7 +383,7 @@ func makeFuncDocs(m map[string] *ast.FuncDecl) []*FuncDoc {
        i := 0;
        for _, f := range m {
                doc := new(FuncDoc);
-               doc.Doc = astComment(f.Doc);
+               doc.Doc = CommentText(f.Doc);
                f.Doc = nil;  // doc consumed - remove from ast.FuncDecl node
                if f.Recv != nil {
                        doc.Recv = f.Recv.Type;
@@ -459,7 +447,7 @@ func (doc *docReader) makeTypeDocs(m map[string] *typeDoc) []*TypeDoc {
                                doc = decl.Doc;
                        }
                        decl.Doc = nil;  // doc consumed - remove from ast.Decl node
-                       t.Doc = astComment(doc);
+                       t.Doc = CommentText(doc);
                        t.Type = typespec;
                        t.Consts = makeValueDocs(old.values, token.CONST);
                        t.Vars = makeValueDocs(old.values, token.VAR);
@@ -499,7 +487,7 @@ func (doc *docReader) makeTypeDocs(m map[string] *typeDoc) []*TypeDoc {
 func makeBugDocs(v *vector.Vector) []string {
        d := make([]string, v.Len());
        for i := 0; i < v.Len(); i++ {
-               d[i] = astComment(v.At(i).(*ast.CommentGroup));
+               d[i] = CommentText(v.At(i).(*ast.CommentGroup));
        }
        return d;
 }
@@ -530,7 +518,7 @@ func (doc *docReader) newDoc(pkgname, importpath, filepath string, filenames []s
        p.FilePath = filepath;
        sort.SortStrings(filenames);
        p.Filenames = filenames;
-       p.Doc = astComment(doc.doc);
+       p.Doc = CommentText(doc.doc);
        // makeTypeDocs may extend the list of doc.values and
        // doc.funcs and thus must be called before any other
        // function consuming those lists