Documentation
¶
Overview ¶
Package core contains configuration and utility internals.
Index ¶
- Variables
- func AllStringsInSlice(strings []string, slice []string) bool
- func CapFirst(s string) string
- func CondSprintf(format string, v ...interface{}) string
- func DefaultConfig() (string, error)
- func DefaultStylesPath() (string, error)
- func FindAsset(cfg *Config, path string) string
- func FindConfigAsset(cfg *Config, name, dir string) string
- func FormatAlert(a *Alert, limit int, level, name string)
- func FormatFromExt(path string, mapping map[string]string) (string, string)
- func FormatMessage(msg string, subs ...string) string
- func FromFile(cfg *Config, dry bool) (*ini.File, error)
- func FromString(src string, cfg *Config, dry bool) (*ini.File, error)
- func GetNormedExt(ext string) string
- func GetPackages(src string) ([]string, error)
- func HasAnySuffix(s string, suffixes []string) bool
- func IgnoreFiles(stylesPath string) ([]string, error)
- func InRange(n int, r []int) bool
- func Indent(text, indent string) string
- func IntInSlice(a int, slice []int) bool
- func IsCode(s string) bool
- func IsLetter(s string) bool
- func IsPhrase(s string) bool
- func MockLoad(project, local string, cfg *Config) error
- func NewE100(context string, err error) error
- func NewE201(msg, value, path string, finder errorCondition) error
- func NewE201FromPosition(msg, file string, goal int) error
- func NewE201FromTarget(msg, value, file string) error
- func NewError(code, title, msg string) error
- func ReplaceAllStringSubmatchFunc(re *regexp.Regexp, str string, repl func([]string) string) string
- func Sanitize(txt string) string
- func ShouldIgnoreDirectory(directoryName string) bool
- func SplitLines(data []byte, atEOF bool) (adv int, token []byte, err error)
- func StringInSlice(a string, slice []string) bool
- func StringsToInterface(strings []string) []interface{}
- func StripANSI(s string) string
- func Substitute(src, sub string, char rune) (string, bool)
- func TextToContext(text string, meta *nlp.Info) []nlp.TaggedWord
- func ToSentence(words []string, andOrOr string) string
- func UniqueStrings(slice []string) []string
- func WhitespaceToSpace(msg string) string
- type Action
- type Alert
- type ByName
- type ByPosition
- type CLIFlags
- type Config
- func (c *Config) AddConfigFile(name string)
- func (c *Config) AddStylesPath(path string)
- func (c *Config) AddWordListFile(name string, accept bool) error
- func (c *Config) ConfigFile() string
- func (c *Config) Root() (string, error)
- func (c *Config) SearchPaths() []string
- func (c *Config) String() string
- func (c *Config) StylesPath() string
- type ConfigSrc
- type DaselValue
- type File
- func (f *File) AddAlert(a Alert, blk nlp.Block, lines, pad int, lookup bool)
- func (f *File) ComputeMetrics() (map[string]interface{}, error)
- func (f *File) FindLoc(ctx, s string, pad, count int, a Alert) (int, []int)
- func (f *File) QueryComments(check string) bool
- func (f *File) ResetComments()
- func (f *File) SetNormedExt(ext string)
- func (f *File) SetText(s string)
- func (f *File) SortedAlerts() []Alert
- func (f *File) UpdateComments(comment string)
- type Scope
- type ScopedValues
- type View
Constants ¶
This section is empty.
Variables ¶
var ( // ConfigDir is the default location for Vale's configuration files. // // This was introduced in v3.0.0 as a means of standardizing the location // of Vale's configuration files. // // This directory is relative to the user's specified `StylesPath`, which // can be set via the `--config` flag, the `VALE_CONFIG_PATH` environment // variable, or the default search process. // // NOTE: The config pipeline is stored in the top-level `.vale-config` // directory. See `cmd/vale/sync.go`. ConfigDir = "config" // PipeDir is the default location for Vale's configuration pipeline. PipeDir = ".vale-config" VocabDir = filepath.Join(ConfigDir, "vocabularies") DictDir = filepath.Join(ConfigDir, "dictionaries") TmplDir = filepath.Join(ConfigDir, "templates") IgnoreDir = filepath.Join(ConfigDir, "ignore") ActionDir = filepath.Join(ConfigDir, "actions") FilterDir = filepath.Join(ConfigDir, "filters") ScriptDir = filepath.Join(ConfigDir, "scripts") ViewDir = filepath.Join(ConfigDir, "views") )
var AlertLevels = []string{"suggestion", "warning", "error"}
AlertLevels holds the possible values for "level" in an external rule.
var CommentsByNormedExt = map[string]map[string]string{
".c": {
"inline": `(?:^|\s)(?:(//.+)|(/\*.+\*/))`,
"blockStart": `(/\*.*)`,
"blockEnd": `(.*\*/)`,
},
".clj": {
"inline": `(;+.+)`,
"blockStart": `$^`,
"blockEnd": `$^`,
},
".r": {
"inline": `(#.+)`,
"blockStart": `$^`,
"blockEnd": `$^`,
},
".ps1": {
"inline": `(#.+)`,
"blockStart": `(<#.*)`,
"blockEnd": `(.*#>)`,
},
".php": {
"inline": `(//.+)|(/\*.+\*/)|(#.+)`,
"blockStart": `(/\*.*)`,
"blockEnd": `(.*\*/)`,
},
".lua": {
"inline": `(-- .+)`,
"blockStart": `(-{2,3}\[\[.*)`,
"blockEnd": `(.*\]\])`,
},
".hs": {
"inline": `(-- .+)`,
"blockStart": `(\{-.*)`,
"blockEnd": `(.*-\})`,
},
}
CommentsByNormedExt determines what parts of a file we should lint -- e.g., we only want to lint // or /* comments in a C++ file. Multiple formats are mapped to a single extension (e.g., .java -> .c) because many languages use the same comment delimiters.
Deprecated: When possible, we now use tree-sitter grammars to determine the comment delimiters for a given file. See the `lint/code` package for more information.
TODO: This should be removed once we have tree-sitter grammars for all languages.
var ConfigDirs = []string{ VocabDir, DictDir, TmplDir, IgnoreDir, ActionDir, ScriptDir, FilterDir, ViewDir, }
ConfigDirs is a list of all directories that contain user-defined, non-style configuration files.
var ConfigVars = map[string]string{
"VALE_CONFIG_PATH": "Override the default search process by specifying a .vale.ini file.",
"VALE_STYLES_PATH": "Specify the location of the default StylesPath.",
}
ConfigVars is a list of all supported environment variables.
var FormatByExtension = map[string][]string{
`\.(?:[rc]?py[3w]?|[Ss][Cc]onstruct)$`: {".py", "code"},
`\.(?:adoc|asciidoc|asc)$`: {".adoc", "markup"},
`\.(?:clj|cljs|cljc|cljd)$`: {".clj", "code"},
`\.(?:cpp|cc|c|cp|cxx|c\+\+|h|hpp|h\+\+)$`: {".cpp", "code"},
`\.(?:css)$`: {".css", "code"},
`\.(?:cs|csx)$`: {".c", "code"},
`\.(?:dita)$`: {".dita", "markup"},
`\.(?:go)$`: {".go", "code"},
`\.(?:hs)$`: {".hs", "code"},
`\.(?:html|htm|shtml|xhtml)$`: {".html", "markup"},
`\.(?:java|bsh)$`: {".java", "code"},
`\.(?:jl)$`: {".jl", "code"},
`\.(?:js|jsx)$`: {".js", "code"},
`\.(?:lua)$`: {".lua", "code"},
`\.(?:md|mdown|markdown|markdn)$`: {".md", "markup"},
`\.(?:mdx)$`: {".mdx", "markup"},
`\.(?:org)$`: {".org", "markup"},
`\.(?:php)$`: {".php", "code"},
`\.(?:pl|pm|pod)$`: {".r", "code"},
`\.(?:proto)$`: {".proto", "code"},
`\.(?:ps1|psm1|psd1)$`: {".ps1", "code"},
`\.(?:rb|Gemfile|Rakefile|Brewfile|gemspec)$`: {".rb", "code"},
`\.(?:rs)$`: {".rs", "code"},
`\.(?:rst|rest)$`: {".rst", "markup"},
`\.(?:r|R)$`: {".r", "code"},
`\.(?:sass|less)$`: {".c", "code"},
`\.(?:scala|sbt)$`: {".c", "code"},
`\.(?:swift)$`: {".c", "code"},
`\.(?:ts|tsx)$`: {".ts", "code"},
`\.(?:txt)$`: {".txt", "text"},
`\.(?:xml|xsd)$`: {".xml", "markup"},
`\.(?:yaml|yml)$`: {".yml", "data"},
`\.(?:json)$`: {".json", "data"},
`\.(?:toml)$`: {".toml", "data"},
}
FormatByExtension associates a file extension with its "normed" extension and its format (markup, code or text).
var LevelToInt = map[string]int{
"suggestion": 0,
"warning": 1,
"error": 2,
}
LevelToInt allows us to easily compare levels in lint.go.
Functions ¶
func AllStringsInSlice ¶
AllStringsInSlice determines if `slice` contains the `strings`.
func CondSprintf ¶
CondSprintf is sprintf, ignores extra arguments.
func DefaultConfig ¶
DefaultConfig returns the path to the default configuration file.
We don't create this file automatically because there's no actual notion of a "default" configuration -- it's just a file loation.
NOTE: if this file does not exist *and* the user has not specified a project-specific configuration file, Vale raises an error.
func DefaultStylesPath ¶
DefaultStylesPath returns the path to the default styles directory.
NOTE: the default styles directory is only used if neither the project-specific nor the global configuration file specify a `StylesPath`.
func FindAsset ¶
FindAsset tries to locate a Vale-related resource by looking in the user-defined StylesPath.
func FindConfigAsset ¶ added in v3.2.0
FindConfigAsset tries to locate a Vale-related resource by looking in the user-defined StylesPath(s).
func FormatAlert ¶
FormatAlert ensures that all required fields have data.
func FormatFromExt ¶
FormatFromExt takes a file extension and returns its [normExt, format] list, if supported.
func FormatMessage ¶
FormatMessage inserts `subs` into `msg`.
func FromString ¶
FromString loads an INI configuration from a string.
func GetNormedExt ¶ added in v3.5.0
func GetPackages ¶
Get the user-defined packages from a `.vale.ini` file.
func HasAnySuffix ¶
func IgnoreFiles ¶
IgnoreFiles returns a list of all user-defined ignore files.
func IntInSlice ¶
IntInSlice determines if `slice` contains the int `a`.
func IsPhrase ¶
IsPhrase returns `true` is s is a phrase-like token.
This is used to differentiate regex tokens from non-regex.
func MockLoad ¶ added in v3.9.1
MockLoad returns the would-be configuration after loading two files, one from the project and one from the user's local directory.
func NewE100 ¶
NewE100 creates a new, formatted "unexpected" error.
Since E100 errors can occur anywhere, we include a "context" that makes it clear where exactly the error was generated.
func NewE201 ¶
NewE201 creates a formatted user-generated error.
201 errors involve a specific configuration asset and should contain parsable location information on their last line of the form:
<path>:<line>:<start>:<end>
func NewE201FromPosition ¶
NewE201FromPosition creates a new E201 error from an in-file location.
func NewE201FromTarget ¶
NewE201FromTarget creates a new E201 error from a target string.
func NewError ¶
NewError creates a colored error from the given information.
The standard format is ¶
``` <code> [<context>] <title>
<msg> ```
func ShouldIgnoreDirectory ¶
ShouldIgnoreDirectory will check if directory should be ignored
func SplitLines ¶
SplitLines splits on CRLF, CR not followed by LF, and LF.
func StringInSlice ¶
StringInSlice determines if `slice` contains the string `a`.
func StringsToInterface ¶
func StringsToInterface(strings []string) []interface{}
StringsToInterface converts a slice of strings to an interface.
func Substitute ¶
Substitute replaces the substring `sub` with a string of asterisks.
func TextToContext ¶
func TextToContext(text string, meta *nlp.Info) []nlp.TaggedWord
func ToSentence ¶
ToSentence converts a slice of terms into sentence.
func UniqueStrings ¶ added in v3.9.4
UniqueStrings returns a new slice with all duplicate strings removed.
func WhitespaceToSpace ¶
WhitespaceToSpace converts newlines into a single space.
Types ¶
type Action ¶
type Action struct {
Name string // the name of the action -- e.g, 'replace'
Params []string // a slice of parameters for the given action
}
An Action represents a possible solution to an Alert.
type Alert ¶
type Alert struct {
Action Action // a possible solution
Span []int // the [begin, end] location within a line
Offset []string `json:"-"` // tokens to ignore before this match
Check string // the name of the check
Description string // why `Message` is meaningful
Link string // reference material
Message string // the output message
Severity string // 'suggestion', 'warning', or 'error'
Match string // the actual matched text
Line int // the source line
Limit int `json:"-"` // the max times to report
Hide bool `json:"-"` // should we hide this alert?
}
An Alert represents a potential error in prose.
type ByPosition ¶
type ByPosition []Alert
ByPosition sorts Alerts by line and column.
func (ByPosition) Len ¶
func (a ByPosition) Len() int
func (ByPosition) Less ¶
func (a ByPosition) Less(i, j int) bool
func (ByPosition) Swap ¶
func (a ByPosition) Swap(i, j int)
type CLIFlags ¶
type CLIFlags struct {
AlertLevel string
Built string
Glob string
InExt string
Output string
Path string
Sources string
Filter string
Local bool
NoExit bool
Normalize bool
Relative bool
Remote bool
Simple bool
Sorted bool
Wrap bool
Version bool
Help bool
IgnoreGlobal bool
}
CLIFlags holds the values that are defined at runtime by the user.
For example, `vale --minAlertLevel=error`.
type Config ¶
type Config struct {
// General configuration
BlockIgnores map[string][]string // A list of blocks to ignore
Checks []string // All checks to load
Formats map[string]string // A map of unknown -> known formats
Asciidoctor map[string]string // A map of asciidoctor attributes
FormatToLang map[string]string // A map of format to lang ID
GBaseStyles []string // Global base style
GChecks map[string]bool // Global checks
IgnoredClasses []string // A list of HTML classes to ignore
IgnoredScopes []string // A list of HTML tags to ignore
MinAlertLevel int // Lowest alert level to display
Vocab []string // The active project
RuleToLevel map[string]string // Single-rule level changes
SBaseStyles map[string][]string // Syntax-specific base styles
SChecks map[string]map[string]bool // Syntax-specific checks
SkippedScopes []string // A list of HTML blocks to ignore
Stylesheets map[string]string // XSLT stylesheet
TokenIgnores map[string][]string // A list of tokens to ignore
CommentDelimiters map[string][2]string // Strings to treat as comment delimiters. Indicates the start and end delimiters.
WordTemplate string // The template used in YAML -> regexp list conversions
RootINI string // the path to the project's .vale.ini file
Paths []string // A list of paths to search for styles
ConfigFiles []string // A list of configuration files to load
AcceptedTokens []string `json:"-"` // Project-specific vocabulary (okay)
RejectedTokens []string `json:"-"` // Project-specific vocabulary (avoid)
FallbackPath string `json:"-"`
SecToPat map[string]glob.Glob `json:"-"`
Styles []string `json:"-"`
Views map[string]*View `json:"-"`
NLPEndpoint string // An external API to call for NLP-related work.
// Command-line configuration
Flags *CLIFlags `json:"-"`
StyleKeys []string `json:"-"`
RuleKeys []string `json:"-"`
}
Config holds the configuration values from both the CLI and `.vale.ini`.
func ReadPipeline ¶
ReadPipeline loads Vale's configuration according to the local search process.
A `dry` run means that we can't expect the `StylesPath` to fully formed yet. For example, some assets may not have been downloaded yet via the `sync` command.
func (*Config) AddConfigFile ¶ added in v3.1.0
AddConfigFile adds a new configuration file to the current list.
func (*Config) AddStylesPath ¶ added in v3.1.0
AddStylesPath adds a new path to the current list.
func (*Config) AddWordListFile ¶
AddWordListFile adds vocab terms from a provided file.
func (*Config) ConfigFile ¶ added in v3.3.0
ConfigFile returns the last configuration file in the list.
This represents the user's project-agnostic configuration file -- i.e., the last one that was added.
func (*Config) SearchPaths ¶ added in v3.1.0
func (*Config) StylesPath ¶
GetStylesPath returns the last path in the list.
This represents the user's project-specific styles directory -- i.e., the last one that was added.
type ConfigSrc ¶
type ConfigSrc int
ConfigSrc is a source of configuration values.
This could be a local file, a string, or a remote URL.
type DaselValue ¶ added in v3.9.4
type File ¶
type File struct {
NLP nlp.Info // -
Summary bytes.Buffer // holds content to be included in summarization checks
Alerts []Alert // all alerts associated with this file
BaseStyles []string // base style assigned in .vale
Lines []string // the File's Content split into lines
Sequences []string // tracks various info (e.g., defined abbreviations)
Content string // the raw file contents
Format string // 'code', 'markup' or 'prose'
NormedExt string // the normalized extension (see util/format.go)
Path string // the full path
NormedPath string // the normalized path
Transform string // XLST transform
RealExt string // actual file extension
Checks map[string]bool // syntax-specific checks assigned in .vale
ChkToCtx map[string]string // maps a temporary context to a particular check
Comments map[string]bool // comment control statements
Metrics map[string]int // count-based metrics
Lookup bool // -
// contains filtered or unexported fields
}
A File represents a linted text file.
func (*File) ComputeMetrics ¶
ComputeMetrics returns all of f's metrics.
func (*File) QueryComments ¶
QueryComments checks if there has been an in-text comment for this check.
func (*File) ResetComments ¶
func (f *File) ResetComments()
ResetComments resets the state of all checks back to active.
func (*File) SetNormedExt ¶ added in v3.9.4
SetNormedExt sets the normalized extension of a File.
func (*File) SortedAlerts ¶
SortedAlerts returns all of f's alerts sorted by line and column.
func (*File) UpdateComments ¶
UpdateComments sets a new status based on comment.
type ScopedValues ¶ added in v3.9.4
A ScopedValues is a value that has been assigned a scope.
type View ¶ added in v3.12.0
A View is a named, virtual representation of a subset of a file's structured content. It is defined by a set of queries that can be used to extract specific information from the file.
The supported engines are:
- `tree-sitter` - `dasel` - `command`