On this page
Resolving selfdoc's directives against Dart source: public declarations, doc comments and class members, read with patterns and no Dart toolchain.
#internal/extractors/dart
#internal/extractors/dart
Package dart resolves selfdoc's directives against Dart source.
Nothing from the Dart toolchain is required: the file is read with patterns, which is what lets a documentation build run anywhere the repository is checked out. The four directives it serves are ref, prose-desc, table-schema and table-config.
#What the scanner knows about Dart
A library's public surface is not what one file declares. A part file's declarations belong to the library that declares the part, and a barrel file re-exports what it exports -- transitively, through show and hide combinators, and through both arms of a conditional export. Both are followed, with a visited set so a circular export answers instead of hanging, and local declarations shadow a re-exported name of the same spelling.
Generated files are refused at every level -- as the directive's own target, as a part, and as an export target -- because a name.generator.dart file is a build artifact whose contents restate what the hand-written file already says. The test is the file name: two dots before the extension.
#Extractor
type Extractor structExtractor reads Dart source.
#New
func New() extractors.ExtractorNew builds the Dart extractor.
#Extractor.Detect
func (e *Extractor) Detect(dir string) boolDetect reports whether dir is a Dart package, by its pubspec.
#Extractor.FileExtensions
func (e *Extractor) FileExtensions() []string { return []string{".dart"} }FileExtensions is the one extension Dart source carries.
#Extractor.ResolvePath
func (e *Extractor) ResolvePath(pathArg string, sourcePaths []string, baseDir string) stringResolvePath resolves a directive's path argument to a Dart file or directory.
#Extractor.PublicSymbols
func (e *Extractor) PublicSymbols(file string) ([]string, error)PublicSymbols lists what a Dart library exports: its own public top-level declarations, then the ones its part files declare, then the ones it re-exports. A generated file exports nothing.
#Extractor.ModuleDocstring
func (e *Extractor) ModuleDocstring(path string) (string, error)ModuleDocstring is the library-level doc comment at the top of a Dart file.
#Extractor.SymbolDetails
func (e *Extractor) SymbolDetails(file, symbol string) (*extractors.SymbolDetails, error)SymbolDetails reports what a Dart file says about one function's parameters and return value. A dotted name selects a member of a class, an abstract class or a mixin ("UserRepository.findById").