type Package … type Value … type Type … type Func … type Note … type Mode … const AllDecls … const AllMethods … const PreserveAST … // New computes the package documentation for the given package AST. // New takes ownership of the AST pkg and may edit or overwrite it. // To have the [Examples] fields populated, use [NewFromFiles] and include // the package's _test.go files. func New(pkg *ast.Package, importPath string, mode Mode) *Package { … } func (p *Package) collectValues(values []*Value) { … } func (p *Package) collectTypes(types []*Type) { … } func (p *Package) collectFuncs(funcs []*Func) { … } // NewFromFiles computes documentation for a package. // // The package is specified by a list of *ast.Files and corresponding // file set, which must not be nil. // NewFromFiles uses all provided files when computing documentation, // so it is the caller's responsibility to provide only the files that // match the desired build context. "go/build".Context.MatchFile can // be used for determining whether a file matches a build context with // the desired GOOS and GOARCH values, and other build constraints. // The import path of the package is specified by importPath. // // Examples found in _test.go files are associated with the corresponding // type, function, method, or the package, based on their name. // If the example has a suffix in its name, it is set in the // [Example.Suffix] field. [Examples] with malformed names are skipped. // // Optionally, a single extra argument of type [Mode] can be provided to // control low-level aspects of the documentation extraction behavior. // // NewFromFiles takes ownership of the AST files and may edit them, // unless the PreserveAST Mode bit is on. func NewFromFiles(fset *token.FileSet, files []*ast.File, importPath string, opts ...any) (*Package, error) { … } // simpleImporter returns a (dummy) package object named by the last path // component of the provided package path (as is the convention for packages). // This is sufficient to resolve package identifiers without doing an actual // import. It never returns an error. func simpleImporter(imports map[string]*ast.Object, path string) (*ast.Object, error) { … } // lookupSym reports whether the package has a given symbol or method. // // If recv == "", HasSym reports whether the package has a top-level // const, func, type, or var named name. // // If recv != "", HasSym reports whether the package has a type // named recv with a method named name. func (p *Package) lookupSym(recv, name string) bool { … } // lookupPackage returns the import path identified by name // in the given package. If name uniquely identifies a single import, // then lookupPackage returns that import. // If multiple packages are imported as name, importPath returns "", false. // Otherwise, if name is the name of p itself, importPath returns "", true, // to signal a reference to p. // Otherwise, importPath returns "", false. func (p *Package) lookupPackage(name string) (importPath string, ok bool) { … } // Parser returns a doc comment parser configured // for parsing doc comments from package p. // Each call returns a new parser, so that the caller may // customize it before use. func (p *Package) Parser() *comment.Parser { … } // Printer returns a doc comment printer configured // for printing doc comments from package p. // Each call returns a new printer, so that the caller may // customize it before use. func (p *Package) Printer() *comment.Printer { … } // HTML returns formatted HTML for the doc comment text. // // To customize details of the HTML, use [Package.Printer] // to obtain a [comment.Printer], and configure it // before calling its HTML method. func (p *Package) HTML(text string) []byte { … } // Markdown returns formatted Markdown for the doc comment text. // // To customize details of the Markdown, use [Package.Printer] // to obtain a [comment.Printer], and configure it // before calling its Markdown method. func (p *Package) Markdown(text string) []byte { … } // Text returns formatted text for the doc comment text, // wrapped to 80 Unicode code points and using tabs for // code block indentation. // // To customize details of the formatting, use [Package.Printer] // to obtain a [comment.Printer], and configure it // before calling its Text method. func (p *Package) Text(text string) []byte { … }