mirror of
https://github.com/golang/go.git
synced 2025-05-18 05:44:35 +00:00
publish doc.CommentText
R=gri DELTA=29 (10 added, 12 deleted, 7 changed) OCL=34709 CL=34712
This commit is contained in:
parent
127368d220
commit
11df49c43f
@ -8,6 +8,7 @@ package doc
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt";
|
"fmt";
|
||||||
|
"go/ast";
|
||||||
"io";
|
"io";
|
||||||
"once";
|
"once";
|
||||||
"regexp";
|
"regexp";
|
||||||
@ -39,8 +40,17 @@ func setupRegexps() {
|
|||||||
comment_junk = makeRex("^[ \t]*(/\\*|\\*/)[ \t]*$");
|
comment_junk = makeRex("^[ \t]*(/\\*|\\*/)[ \t]*$");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aggregate comment text, without comment markers.
|
// CommentText returns the text of comment,
|
||||||
func commentText(comments []string) string {
|
// 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);
|
once.Do(setupRegexps);
|
||||||
lines := make([]string, 0, 20);
|
lines := make([]string, 0, 20);
|
||||||
for _, c := range comments {
|
for _, c := range comments {
|
||||||
|
@ -304,18 +304,6 @@ func NewPackageDoc(pkg *ast.Package, importpath string) *PackageDoc {
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Conversion to external representation
|
// 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
|
// ValueDoc is the documentation for a group of declared
|
||||||
// values, either vars or consts.
|
// values, either vars or consts.
|
||||||
//
|
//
|
||||||
@ -363,7 +351,7 @@ func makeValueDocs(v *vector.Vector, tok token.Token) []*ValueDoc {
|
|||||||
for i := range d {
|
for i := range d {
|
||||||
decl := v.At(i).(*ast.GenDecl);
|
decl := v.At(i).(*ast.GenDecl);
|
||||||
if decl.Tok == tok {
|
if decl.Tok == tok {
|
||||||
d[n] = &ValueDoc{astComment(decl.Doc), decl, i};
|
d[n] = &ValueDoc{CommentText(decl.Doc), decl, i};
|
||||||
n++;
|
n++;
|
||||||
decl.Doc = nil; // doc consumed - removed from AST
|
decl.Doc = nil; // doc consumed - removed from AST
|
||||||
}
|
}
|
||||||
@ -395,7 +383,7 @@ func makeFuncDocs(m map[string] *ast.FuncDecl) []*FuncDoc {
|
|||||||
i := 0;
|
i := 0;
|
||||||
for _, f := range m {
|
for _, f := range m {
|
||||||
doc := new(FuncDoc);
|
doc := new(FuncDoc);
|
||||||
doc.Doc = astComment(f.Doc);
|
doc.Doc = CommentText(f.Doc);
|
||||||
f.Doc = nil; // doc consumed - remove from ast.FuncDecl node
|
f.Doc = nil; // doc consumed - remove from ast.FuncDecl node
|
||||||
if f.Recv != nil {
|
if f.Recv != nil {
|
||||||
doc.Recv = f.Recv.Type;
|
doc.Recv = f.Recv.Type;
|
||||||
@ -459,7 +447,7 @@ func (doc *docReader) makeTypeDocs(m map[string] *typeDoc) []*TypeDoc {
|
|||||||
doc = decl.Doc;
|
doc = decl.Doc;
|
||||||
}
|
}
|
||||||
decl.Doc = nil; // doc consumed - remove from ast.Decl node
|
decl.Doc = nil; // doc consumed - remove from ast.Decl node
|
||||||
t.Doc = astComment(doc);
|
t.Doc = CommentText(doc);
|
||||||
t.Type = typespec;
|
t.Type = typespec;
|
||||||
t.Consts = makeValueDocs(old.values, token.CONST);
|
t.Consts = makeValueDocs(old.values, token.CONST);
|
||||||
t.Vars = makeValueDocs(old.values, token.VAR);
|
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 {
|
func makeBugDocs(v *vector.Vector) []string {
|
||||||
d := make([]string, v.Len());
|
d := make([]string, v.Len());
|
||||||
for i := 0; i < v.Len(); i++ {
|
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;
|
return d;
|
||||||
}
|
}
|
||||||
@ -530,7 +518,7 @@ func (doc *docReader) newDoc(pkgname, importpath, filepath string, filenames []s
|
|||||||
p.FilePath = filepath;
|
p.FilePath = filepath;
|
||||||
sort.SortStrings(filenames);
|
sort.SortStrings(filenames);
|
||||||
p.Filenames = filenames;
|
p.Filenames = filenames;
|
||||||
p.Doc = astComment(doc.doc);
|
p.Doc = CommentText(doc.doc);
|
||||||
// makeTypeDocs may extend the list of doc.values and
|
// makeTypeDocs may extend the list of doc.values and
|
||||||
// doc.funcs and thus must be called before any other
|
// doc.funcs and thus must be called before any other
|
||||||
// function consuming those lists
|
// function consuming those lists
|
||||||
|
Loading…
x
Reference in New Issue
Block a user