©
本文档使用
php.cn手册 发布
import "go/doc"
Overview
Index
Package doc从Go AST中提取源代码文档。
Variables
func Examples(files ...*ast.File) []*Example
func IsPredeclared(s string) bool
func Synopsis(s string) string
func ToHTML(w io.Writer, text string, words map[string]string)
func ToText(w io.Writer, text string, indent, preIndent string, width int)
type Example
type Filter
type Func
type Mode
type Note
type Package
func New(pkg *ast.Package, importPath string, mode Mode) *Package
func (p *Package) Filter(f Filter)
type Type
type Value
comment.go doc.go example.go exports.go filter.go reader.go synopsis.go
var IllegalPrefixes = []string{ "copyright", "all rights", "author",}
func Examples(files ...*ast.File) []*Example
Examples返回按名称字段排序的文件中找到的示例。Order字段记录遇到示例的顺序。
可播放的示例必须位于名称以“_test”结尾的包中。在以下任一情况下,示例都是“可播放的”(播放字段不为零):
- The example function is self-contained: the function references only identifiers from other packages (or predeclared identifiers, such as "int") and the test file does not include a dot import.- The entire test file is the example: the file contains exactly one example function, zero test or benchmark functions, and at least one top-level function, type, variable, or constant declaration other than the example function.
func IsPredeclared(s string) bool
IsPredeclared报告s是否是预先标识的标识符。
func Synopsis(s string) string
Synopsis返回s中第一句话的清晰版本。该句在第一个句点后加空格,并且前面没有一个大写字母后结束。结果字符串没有\ n,\ r或\ t字符,并且在单词之间只使用单个空格。如果s从任何非法前缀开始,则结果是空字符串。
func ToHTML(w io.Writer, text string, words map[string]string)
ToHTML将注释文本转换为格式化的HTML。该评论是由DocReader编写的,因此已知不会在行尾有空行,也不会在行尾有尾随空格。评论标记已被删除。
不缩进的非空行的每个跨度都被转换为单个段落。规则有一个例外:由单一行组成的跨度,后面跟着另一段跨度,以大写字母开头,并且不包含标点符号被格式化为标题。
缩进行的跨度被转换为<pre>块,并删除了公共缩进前缀。
评论文本中的URL被转换为链接; 如果URL也出现在单词映射中,则链接将从映射中获取(如果相应的映射值是空字符串,则URL不会转换为链接)。
出现在单词映射中的Go标识符以斜体表示; 如果相应的映射值不是空字符串,则将其视为URL并将该单词转换为链接。
func ToText(w io.Writer, text string, indent, preIndent string, width int)
ToText以文本输出的形式准备评论文本。它将文本段落包装成宽度或更少的Unicode代码点,然后将每行缩进前缀。在预先格式化的部分(如程序文本)中,它使用preIndent前缀每个非空行。
一个Example 代表了一个在源文件中找到的示例函数。
type Example struct { Name string // name of the item being exemplified Doc string // example function doc string Code ast.Node Play *ast.File // a whole program version of the example Comments []*ast.CommentGroup Output string // expected output Unordered bool EmptyOutput bool // expect empty output Order int // original source code order}
type Filter func(string) bool
Func是func声明的文档。
type Func struct { Doc string Name string Decl *ast.FuncDecl // methods // (for functions, these fields have the respective zero value) Recv string // actual receiver "T" or "*T" Orig string // original receiver "T" or "*T" Level int // embedding level; 0 means not embedded}
Mode值控制New的操作。
type Mode int
const ( // extract documentation for all package-level declarations, // not just exported ones AllDecls Mode = 1 << iota // show all embedded methods, not just the ones of // invisible (unexported) anonymous fields AllMethods)
Note 代表以“MARKER(uid):note body”开头的标注注释。任何带有2个或更多大写AZ字母的标记以及至少一个字符的uid都被识别。uid后面的“:”是可选的。注释收集在由Note 标记索引的Package.Notes地图中。
type Note struct { Pos, End token.Pos // position range of the comment containing the marker UID string // uid found with the marker Body string // note body text}
Package 是整个包的文档。
type Package struct { Doc string Name string ImportPath string Imports []string Filenames []string Notes map[string][]*Note // Deprecated: For backward compatibility Bugs is still populated, // but all new code should use Notes instead. Bugs []string // declarations Consts []*Value Types []*Type Vars []*Value Funcs []*Func}
func New(pkg *ast.Package, importPath string, mode Mode) *Package
New计算给定包AST的包文档。New取得AST pkg的所有权,并可以编辑或覆盖它。
func (p *Package) Filter(f Filter)
过滤器消除了不通过过滤器f的名称的文档。TODO(gri):将“Type.Method”识别为名称。
Type是类型声明的文档。
type Type struct { Doc string Name string Decl *ast.GenDecl // associated declarations Consts []*Value // sorted list of constants of (mostly) this type Vars []*Value // sorted list of variables of (mostly) this type Funcs []*Func // sorted list of functions returning this type Methods []*Func // sorted list of methods (including embedded ones) of this type}
Value 是(可能分组的)var或const声明的文档。
type Value struct { Doc string Names []string // var or const names in declaration order Decl *ast.GenDecl // contains filtered or unexported fields}