Skip to content
internal/extractors/dart
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

Go go
type Extractor struct

Extractor reads Dart source.

#New

Go go
func New() extractors.Extractor

New builds the Dart extractor.

#Extractor.Detect

Go go
func (e *Extractor) Detect(dir string) bool

Detect reports whether dir is a Dart package, by its pubspec.

#Extractor.FileExtensions

Go go
func (e *Extractor) FileExtensions() []string { return []string{".dart"} }

FileExtensions is the one extension Dart source carries.

#Extractor.ResolvePath

Go go
func (e *Extractor) ResolvePath(pathArg string, sourcePaths []string, baseDir string) string

ResolvePath resolves a directive's path argument to a Dart file or directory.

#Extractor.PublicSymbols

Go go
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

Go go
func (e *Extractor) ModuleDocstring(path string) (string, error)

ModuleDocstring is the library-level doc comment at the top of a Dart file.

#Extractor.SymbolDetails

Go go
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").

Search