import "go/doc"

docパッケージは、Go言語のAST(Abstract Syntax Tree:抽象構文木)からソースコードのドキュメントを抽出します。

パッケージファイル

comment.go doc.go

CommentText関数

func CommentText(comment *ast.CommentGroup) string

CommentTextは、コメント文を返します。このときコメント記号の//、/*、*/は取り除かれます。

ToHTML関数

func ToHTML(w io.Writer, s []byte, words map[string]string)

Convertは、コメント文をHTMLに変換します。このコメント文はDocReaderで処理されているので、コメントの前後に空行やスペースを伴ないことが保証されています。また、コメント記号はすでに取り除かれたあとです。

連続した\nは、</p><p>に変換され、インデント行はインデントなしの<pre>ブロックに変換されます。

コメント内のURLは、リンクに変換されます。wordsマップ内にURLがあれば、リンクはそのマップから取得されます。(マップに格納されている値が空文字列のときは、URLはリンクに変換されません)

wordsマップに登録されているGo言語の識別子はイタリック体に変換されます。マップに格納されている値が空文字列でないときは、その値をURLとみなして、識別子とURLをリンクに変換します。

Filter型

type Filter func(string) bool

FuncDoc型

FuncDocは、関数宣言(トップレベルの関数、およびメソッド)のドキュメントです。

type FuncDoc struct {
    Doc  string
    Recv ast.Expr // TODO(rsc): Would like string here
    Name string
    Decl *ast.FuncDecl
}

PackageDoc型

PackageDocは、パッケージ全体のドキュメントです。

type PackageDoc struct {
    PackageName string
    ImportPath  string
    Filenames   []string
    Doc         string
    Consts      []*ValueDoc
    Types       []*TypeDoc
    Vars        []*ValueDoc
    Funcs       []*FuncDoc
    Bugs        []string
}

NewFileDoc関数

func NewFileDoc(file *ast.File) *PackageDoc

NewPackageDoc関数

func NewPackageDoc(pkg *ast.Package, importpath string) *PackageDoc

(*PackageDoc) Filter関数

func (p *PackageDoc) Filter(f Filter)

Filterは、フィルタ関数fに名称を渡したときにfalseを返すものをドキュメントから排除します。ToDo:「Type.Method」を名称として認識できるようにする。

TypeDoc型

TypeDocは、型宣言のドキュメントです。ConstsとVarsは、(ほとんどが)この型の定数と変数のソート済みリストです。Factoriesは、この型の値を返すファクトリ関数のソート済みリストです。Methodsは、この型のメソッドのソート済みリストです。

type TypeDoc struct {
    Doc       string
    Type      *ast.TypeSpec
    Consts    []*ValueDoc
    Vars      []*ValueDoc
    Factories []*FuncDoc
    Methods   []*FuncDoc
    Decl      *ast.GenDecl
    // contains unexported fields
}

ValueDoc型

ValueDocは、値(変数、および定数)の宣言グループのドキュメントです。

type ValueDoc struct {
    Doc  string
    Decl *ast.GenDecl
    // contains unexported fields
}