core

package
v0.0.0-...-bbc9ce3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 6, 2021 License: BSD-2-Clause Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const AllRulesName = "all"

AllRulesName is a reserved rule name used to indicate "all" rules.

Variables

This section is empty.

Functions

func AllRules

func AllRules() []string

AllRules returns the names of all the registered rules.

func HasRule

func HasRule(name string) bool

HasRule tests whether a given rule is registered.

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) 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 (r *RootReporter) PrintOnlyForFiles(filenamesFilter *regexp.Regexp, writer io.Writer) error

func (*RootReporter) Warnf

func (r *RootReporter) Warnf(tok Token, format string, a ...interface{})

type Token

type Token struct {
	Doc     *Doc
	Kind    TokenKind
	Content string

	// Ln indicates the line number of the start of the token, starting at 1.
	Ln int

	// Col indicates the column number of the start of the token, in number of
	// runes, starting at 1.
	Col int
}

func (Token) String

func (tok Token) String() string

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
)

func (TokenKind) String

func (kind TokenKind) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL