Documentation ¶
Index ¶
- Constants
- func AllRules() []string
- func HasRule(name string) bool
- func ProcessSingleDoc(filename string, stream io.Reader, rule LintRuleOverTokens) error
- func RegisterLintRuleOverPatterns(name string, instantiator func(Reporter) LintRuleOverPatterns)
- func RegisterLintRuleOverTokens(name string, instantiator func(Reporter) LintRuleOverTokens)
- type DefaultLintRuleOverPatterns
- func (DefaultLintRuleOverPatterns) OnDocEnd()
- func (DefaultLintRuleOverPatterns) OnDocStart(doc *Doc)
- func (DefaultLintRuleOverPatterns) OnEnd()
- func (DefaultLintRuleOverPatterns) OnLinkByURL(url Token)
- func (DefaultLintRuleOverPatterns) OnLinkByXref(xref Token)
- func (DefaultLintRuleOverPatterns) OnStart()
- func (DefaultLintRuleOverPatterns) OnTableOfContents(toc Token)
- func (DefaultLintRuleOverPatterns) OnXrefDefinition(xref, url Token)
- type DefaultLintRuleOverTokens
- type Doc
- type LintRuleOverPatterns
- type LintRuleOverTokens
- type Reporter
- type RootReporter
- func (r *RootReporter) ForRule(rule string) Reporter
- func (r *RootReporter) HasMessages(filenamesFilter *regexp.Regexp) bool
- func (r *RootReporter) Print(writer io.Writer) error
- func (r *RootReporter) PrintOnlyForFiles(filenamesFilter *regexp.Regexp, writer io.Writer) error
- func (r *RootReporter) Warnf(tok Token, format string, a ...interface{})
- type Token
- type TokenKind
Constants ¶
const AllRulesName = "all"
AllRulesName is a reserved rule name used to indicate "all" rules.
Variables ¶
This section is empty.
Functions ¶
func ProcessSingleDoc ¶
func ProcessSingleDoc(filename string, stream io.Reader, rule LintRuleOverTokens) error
ProcessSingleDoc processes a single document.
func RegisterLintRuleOverPatterns ¶
func RegisterLintRuleOverPatterns(name string, instantiator func(Reporter) LintRuleOverPatterns)
RegisterLintRuleOverPatterns registers a lint rule over patterns. This is meant to be called from an `init` block.
func RegisterLintRuleOverTokens ¶
func RegisterLintRuleOverTokens(name string, instantiator func(Reporter) LintRuleOverTokens)
RegisterLintRuleOverTokens registers a lint rule over tokens. This is meant to be called from an `init` block.
Types ¶
type DefaultLintRuleOverPatterns ¶
type DefaultLintRuleOverPatterns struct{}
The DefaultLintRuleOverPatterns provides default implementation for the LintRuleOverPatterns interface.
func (DefaultLintRuleOverPatterns) OnDocEnd ¶
func (DefaultLintRuleOverPatterns) OnDocEnd()
func (DefaultLintRuleOverPatterns) OnDocStart ¶
func (DefaultLintRuleOverPatterns) OnDocStart(doc *Doc)
func (DefaultLintRuleOverPatterns) OnEnd ¶
func (DefaultLintRuleOverPatterns) OnEnd()
func (DefaultLintRuleOverPatterns) OnLinkByURL ¶
func (DefaultLintRuleOverPatterns) OnLinkByURL(url Token)
func (DefaultLintRuleOverPatterns) OnLinkByXref ¶
func (DefaultLintRuleOverPatterns) OnLinkByXref(xref Token)
func (DefaultLintRuleOverPatterns) OnStart ¶
func (DefaultLintRuleOverPatterns) OnStart()
func (DefaultLintRuleOverPatterns) OnTableOfContents ¶
func (DefaultLintRuleOverPatterns) OnTableOfContents(toc Token)
func (DefaultLintRuleOverPatterns) OnXrefDefinition ¶
func (DefaultLintRuleOverPatterns) OnXrefDefinition(xref, url Token)
type DefaultLintRuleOverTokens ¶
type DefaultLintRuleOverTokens struct{}
The DefaultLintRuleOverTokens provides default implementation for the LintRuleOverTokens interface.
func (DefaultLintRuleOverTokens) OnDocEnd ¶
func (DefaultLintRuleOverTokens) OnDocEnd()
func (DefaultLintRuleOverTokens) OnDocStart ¶
func (DefaultLintRuleOverTokens) OnDocStart(doc *Doc)
func (DefaultLintRuleOverTokens) OnEnd ¶
func (DefaultLintRuleOverTokens) OnEnd()
func (DefaultLintRuleOverTokens) OnNext ¶
func (DefaultLintRuleOverTokens) OnNext(tok Token)
func (DefaultLintRuleOverTokens) OnStart ¶
func (DefaultLintRuleOverTokens) OnStart()
type Doc ¶
type Doc struct { Filename string // contains filtered or unexported fields }
A Doc represents a Markdown document.
TODO(fxbug.dev/62964): Avoid duplicating a document's content between the content in the token, and the content in the doc. To support reading the content of a token while a line is being read, we need to either lookup the content in the accumulated lines, or in the accumulated line buffer.
type LintRuleOverPatterns ¶
type LintRuleOverPatterns interface { // OnLinkByXref is called when a link by label is read. OnLinkByXref(xref Token) // OnLinkByURL is called when a link by URL is read. OnLinkByURL(url Token) // OnXrefDefinition is called when a link label definition is read. OnXrefDefinition(xref, url Token) // OnTableOfContents is called when a table of contents is read. OnTableOfContents(toc Token) // contains filtered or unexported methods }
LintRuleOverPatterns defines how rules over patterns operate.
type LintRuleOverTokens ¶
type LintRuleOverTokens interface { // OnNext is called for each token processed as part of reading a document. OnNext(tok Token) // contains filtered or unexported methods }
LintRuleOverTokens defines how rules over tokens operate.
func CombineRules ¶
func CombineRules(rulesOverTokens []LintRuleOverTokens, rulesOverPatterns []LintRuleOverPatterns) LintRuleOverTokens
CombineRules combines rules over tokens and rules over patterns into a single rule over tokens.
To accomplish this combination, dedicated one-to-many rules bridge between the returned rule and the provided rules. Additionally, the token stream is recognized and turned into a pattern stream so as to drive all rules over patterns.
func InstantiateRules ¶
func InstantiateRules(rootReporter *RootReporter, enabledRules []string) LintRuleOverTokens
InstantiateRules instantiates all `enabledRules`.
type Reporter ¶
type Reporter interface { // Warnf formats and adds warning message using the format specifier. Warnf(tok Token, format string, a ...interface{}) }
A Reporter provides utilities to aggregate warning messages attached to specific tokens, and to pretty print these aggregates messages.
type RootReporter ¶
type RootReporter struct { // JSONOutput enables JSON output, instead of the pretty printed human // readable output. JSONOutput bool // contains filtered or unexported fields }
RootReporter is the linter wide reporter, and may be used to report general warnings. When reporting within rules, prefer creating rule reporters with:
rootReporter := ... ruleReporter := rootReporter.ForRule("name-of-rule")
func (*RootReporter) ForRule ¶
func (r *RootReporter) ForRule(rule string) Reporter
ForRule creates a reporter for a specific rule.
func (*RootReporter) HasMessages ¶
func (r *RootReporter) HasMessages(filenamesFilter *regexp.Regexp) bool
HasMessages indicates whether any message was added to this reporter.
func (*RootReporter) Print ¶
func (r *RootReporter) Print(writer io.Writer) error
Print prints this report to the writer. For instance:
reporter.Print(os.Stderr)
func (*RootReporter) PrintOnlyForFiles ¶
func (*RootReporter) Warnf ¶
func (r *RootReporter) Warnf(tok Token, format string, a ...interface{})
type Token ¶
type TokenKind ¶
type TokenKind int
const ( Anchor TokenKind CodeBlock EOF FencedCodeBlock Header Link List Newline Space Text URL HTMLComment // See https://jinja.palletsprojects.com/en/2.11.x/templates/ JinjaStatement JinjaExpression JinjaComment )