Documentation ¶
Overview ¶
Package gosrc is the part of the pipeline of doc2go responsible for finding Go packages and loading information about them.
It provides a Finder to search for packages. These produce [PackageRef]s, which are references to packages. PackageRefs are lightweight and do not contain significant package data, so many of them can be in memory at once. Parser is used to load the actual package data from PackageRefs.
Index ¶
Constants ¶
const Builtin = "builtin"
Builtin is the value for [EntityRefLabel.ImportPath] if the entity referenced is a Go built-in.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DeclFormatter ¶
type DeclFormatter struct {
// contains filtered or unexported fields
}
DeclFormatter formats declarations from a single Go package.
This may be re-used between declarations, but not across packages.
func NewDeclFormatter ¶
func NewDeclFormatter(fset *token.FileSet, topLevelDecls []string) *DeclFormatter
NewDeclFormatter builds a new DeclFormatter for the given package.
func (*DeclFormatter) Debug ¶
func (f *DeclFormatter) Debug(debug bool)
Debug sets whether the formatter is in debug mode. In debug mode, the formatter may panic.
func (*DeclFormatter) FormatDecl ¶
FormatDecl formats a declaration back into source code, and reports regions inside it where anything of note happens.
type DeclLabel ¶
type DeclLabel struct { // Name of the parent inside which the child is declared. // Empty for vars and consts. Parent string // Name of the declared entity. Name string }
DeclLabel marks declaration sites for struct fields, interface methods, and vars and consts.
type EntityRefLabel ¶
type EntityRefLabel struct { // Import path of the package defining the referenced entity. // // This is empty for local references, and "builtin" for // built-ins. ImportPath string // Name of the entity referenced. Name string }
EntityRefLabel marks a region that references another entity.
type Finder ¶
type Finder struct { PackagesConfig *packages.Config // Build tags to enable when searching for packages. Tags []string // Logger to write regular log messages to. Log *log.Logger // Logger to write debug messages to. // // Use nil to disable debug logging. DebugLog *log.Logger }
Finder searches for and returns Go package references using the go/packages library.
The zero value of this is ready to use.
func (*Finder) FindPackages ¶
func (f *Finder) FindPackages(patterns ...string) ([]*PackageRef, error)
FindPackages searches for packages matching the given import path patterns, and returns references to them.
type ImportedPackage ¶
ImportedPackage is a package imported by another package.
type Label ¶
type Label interface {
// contains filtered or unexported methods
}
Label holds structured information about a Region.
type Package ¶
type Package struct { // Name of the package. Name string // Import path of the package. ImportPath string // Parsed ASTs of all source files in the package. Syntax []*ast.File // Parsed ASTs of all test files in the package. TestSyntax []*ast.File // FileSet used to parse these files. Fset *token.FileSet // Names of top-level declarations defined in this package. TopLevelDecls []string }
Package is a package that has been loaded from disk.
type PackageRef ¶
type PackageRef struct { // Name of the package. Name string // Import path of the package. ImportPath string // List of .go files in the package. Files []string // List of _test.go files in the package. TestFiles []string // Packages imported by this package. Imports []ImportedPackage }
PackageRef is a reference to a package.
It holds information necessary to load a package, but doesn't yet load it.
type PackageRefLabel ¶
type PackageRefLabel struct { // Import path of the package. ImportPath string }
PackageRefLabel marks a region that references another Go package.
type Parser ¶
type Parser struct{}
Parser loads the contents of a package by parsing it from source.
func (*Parser) ParsePackage ¶
func (*Parser) ParsePackage(ref *PackageRef) (*Package, error)
ParsePackage parses all files in the package at the given path and fills a Package object with the result.
type Region ¶
type Region struct { // Label signifying what's special about this region. Label Label // Byte offset inside the formatted source code // where this region begins. Offset int // Length of this region. Length int }
Region is a region of a declaration's source code that represents something special.
Inside formatted source code src, a region r's label applies to:
src[r.Offset:r.Offset+r.Length]