On this page
The corpus-wide spelling run: the engine selfdoc check uses, applied to every sibling project, which is how the shared accept list gets populated at all.
#internal/spellcorpus
#internal/spellcorpus
Package spellcorpus is the corpus-wide spelling run: the same engine, every sibling project.
selfdoc check spell-checks the project it is run in. This runs the identical engine over every selfdoc project that lives beside it, which is how the shared accept list gets populated: one sweep surfaces the technical vocabulary the whole fleet uses, and the terms that are genuine get added once, for everyone.
Strictly read-only over the projects it visits. Directives are not resolved -- resolution runs a project's extractors over its source, and a survey has no business doing that in someone else's repository -- so what is scanned is the raw Markdown body of every docs template and every post. Posts are read straight off disk rather than through post discovery, which means drafts are surveyed too: a draft's prose is still prose, and a term it introduces belongs on the accept list before the draft ships. A project whose config cannot be loaded is reported and skipped, never fatal.
#ProjectSpellReport
type ProjectSpellReport structProjectSpellReport is what the sweep found in one project.
#WordCount
type WordCount structWordCount is one unknown word with how many times it occurred.
#CorpusDocument
type CorpusDocument structCorpusDocument is one sweep's whole finding.
It is the one computation behind both renderings: [CorpusDocument.Payload] is the machine document the command's JSON envelope carries, and [RenderCorpusText] is the human report, so the two can never disagree. The Python held this as the payload dictionary itself and rendered out of it; here the typed value is the shared origin and the dictionary is derived from it.
#ScanProject
func ScanProject(ScanProject spell-checks one project's docs tree and its posts.
vocab is the word list to accept against and accepted is the accept list. The report's Error is set instead of results when the project could not be read.
#RunSpellCorpus
func RunSpellCorpus(root string, handle *effects.Handle) (CorpusDocument, int, error)RunSpellCorpus sweeps every selfdoc project under root and returns what it found, with the exit code the command terminates on.
root is the directory whose immediate subdirectories are searched for a selfdoc.json. The exit code is 1 when any unknown word was found -- a misspelling is an error, and the accept list is the sanctioned answer for a genuine term -- and 0 on a clean sweep. A project that could not be read is reported but does not by itself fail the sweep.
#RenderCorpusText
func RenderCorpusText(document CorpusDocument, detail bool) stringRenderCorpusText renders a sweep as the human report.
The summary table plus, when detail, each project's unknown words with a first location and any suggestion.
#ProjectSpellReport.UniqueWords
func (r ProjectSpellReport) UniqueWords() []WordCountUniqueWords returns the report's unknown words with their occurrence counts, commonest first and then alphabetically by lowercased spelling.
#CorpusDocument.Payload
func (d CorpusDocument) Payload() map[string]anyPayload renders the document as the machine payload the sweep carries.