Views
Customize the file-processing pipeline with Views.
Views represent a virtual, filtered perspective of a structured file. They define a series of transformation steps that extract specific, named scopes, effectively changing how the file is represented for linting purposes. By focusing only on relevant sections, Views let you control exactly what content is analyzed—and enable rules that apply only to specific parts of a file.
Each View is defined in a YAML file and consists of a series of steps that are executed in order. Each step includes the following fields:
name: The name of the step. If notypeis provided, the name is used as the only scope for the value. Otherwise, thenameis used as a metascope and will be appended to the active scope – such asheading.<name>.md.expr: An expression that selects the data to be linted. The expression is evaluated by the active engine.type: The type of the data. Supported types aremd,adoc,html,rst, ororg.
Here’s an example of a View that extracts the title and description fields from an OpenAPI document:
engine: dasel
scopes:
- name: title
expr: info.title
type: md
- expr: info.description
type: md
- expr: servers.all().description
type: mdViews are stored in <StylesPath>/config/views and can be referenced in the .vale.ini file under any syntax-specific section:
Each step in a View contains a query that is processed by Dasel (JSON, YAML, or TOML), tree-sitter (source code), or TextFSM (text).
Dasel is a command-line tool that allows you to query and modify data structures using selectors. It works with JSON, YAML, TOML, XML, and more.
Vale uses Dasel to query structured data in files and extract the relevant content. For example, given the following JSON:
You could use the following View to extract the name and description fields from each feature:
Check out the playground to experiment with Dasel queries.
Tree-sitter is a parser generator tool and an incremental parsing library. It can be used to build parsers for source code in any language.
Vale uses tree-sitter to parse source code and extract structured data. For example, given the following Python code:
You could use the following View to extract all comments and function docstrings:
See Pattern Matching with Queries for more information.
Coming soon!
