## 1. Project Overview & Quickstart (vale-cli/LICENSE)

# LICENSE

Open-source repository vale-cli/LICENSE

### Repository Details
- **Repository:** [vale-cli/LICENSE](https://github.com/vale-cli/LICENSE)
- **Primary Language:** Code

*Note: High-volume repository documentation is actively indexed and synchronized by YakaAI.*

## 2. Official Technical Reference & Guides (vale-cli/docs)

## File: website/docs/common/formats/adoc.md

AsciiDoc is supported through the external program [Asciidoctor](https://rubygems.org/gems/asciidoctor).

By default, listing blocks and inline literals are ignored.

---

## File: website/docs/common/formats/code.md

| Language | Extensions | Tokens \(scope\) |
| :--- | :--- | :--- |
| C | `.c`, `.h` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| C\# | `.cs`, `.csx` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| C++ | `.cpp`, `.cc`, `.cxx`, `.hpp` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| CSS | `.css` | `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| Go | `.go` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| Haskell | `.hs` | `--` \(`text.comment.line.ext`\), `{-` \(`text.comment.block.ext`\) |
| Java | `.java`, `.bsh` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| JavaScript | `.js` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| LESS | `.less` | `//`\(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| Lua | `.lua` | `--` \(`text.comment.line.ext`\), `--[[` \(`text.comment.block.ext`\) |
| Perl | `.pl`, `.pm`, `.pod` | `#` \(`text.comment.line.ext`\) |
| PHP | `.php` | `//` \(`text.comment.line.ext`\), `#` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| Python | `.py`, `.py3`, `.pyw`, `.pyi`, `.rpy` | `#` \(`text.comment.line.ext`\), `"""` \(`text.comment.block.ext`\) |
| R | `.r`, `.R` | `#` \(`text.comment.line.ext`\) |
| Ruby | `.rb` | `#` \(`text.comment.line.ext`\), `^=begin` \(`text.comment.block.ext`\) |
| Sass | `.sass` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |
| Scala | `.scala`, `.sbt` | `//`\(`text.comment.line.ext`\), |
| Swift | `.swift` | `//` \(`text.comment.line.ext`\), `/*...*/` \(`text.comment.line.ext`\), `/*` \(`text.comment.block.ext`\) |

---

## File: website/docs/common/formats/comments.md

You can use selective, in-text configuration through markup comments in certain
formats. The follow sections describe the comment style required for each
supported format.

### Markdown &amp; HTML

Markdown and HTML use HTML-style comments:

```markup
<!-- vale off -->

This is some text

more text here...

<!-- vale on -->

<!-- vale Style.Rule = NO -->

This is some text

<!-- vale Style.Rule = YES -->
```

### reStructuredText

reStructuredText uses its own comment style:

```text
.. vale off

This is some text

.. vale on
```

### AsciiDoc

AsciiDoc uses HTML-style comments with its pass-through functionality:

```text
pass:[<!-- vale Microsoft.GenderBias = NO -->]

This steward is ignored.

pass:[<!-- vale Microsoft.GenderBias = YES -->]

This is a steward that raises an alert.
```

---

## File: website/docs/common/formats/dita.md

:::info Heads up!
Due to the dependency on the third-party `dita` command,
you'll likely experience worse performance with DITA files compared to other formats.
:::

DITA is supported through the [DITA Open Toolkit](https://www.dita-ot.org/). You'll need to follow the [installation instructions](https://www.dita-ot.org/dev/topics/installing-client.html), including the optional step of adding the absolute path for the `bin` directory to the `PATH` system variable.

By default, `<codeblock>`, `<tt>`, and `<codeph>` elements are ignored.

---

## File: website/docs/common/formats/html.md

HTML5 support is built in. By default, `script`, `style`, `pre`, `code`,
and `tt` tags are ignored.

---

## File: website/docs/common/formats/markdown.md

:::info Heads up!
Markdown autolinks are not currently supported. See [issues/288](https://github.com/errata-ai/vale/issues/288) for more information.
:::

[GitHub-Flavored Markdown](https://github.github.com/gfm/) support is built in.
By default, indented blocks, fenced blocks, and code spans are ignored.

If you're using another flavor of Markdown, see
[non-standard markup](#non-standard-markup) for information on how to
make your flavor compatible.

---

## File: website/docs/common/formats/nonstan.md

When working with non-HTML markup, you'll probably find that there are certain
non-standard sections of text you'd like to ignore.

To ignore entire blocks of text—for example,
[Hugo's shortcodes](https://gohugo.io/content-management/shortcodes/)—you'll
want to define `BlockIgnores`. For example, consider the following
shortcode-like `file` snippet:

```text
{< file "hello.go" go >}
package main

func main() {
    fmt.Printf("hello, world\n")
}
{</ file >}
```

To ignore all instances of `file`, we'd use a pattern along the lines of the
following:

```ini
BlockIgnores = (?s) *({< file [^>]* >}.*?{</ ?file >})
```

The basic idea is to capture the entire snippet in the first grouping. See
[regex101](https://regex101.com/r/mFM0kZ/1/) for a more thorough explanation.

You can also define more than one by using a list \(the `\` allows for line
breaks\):

```ini
BlockIgnores = (?s) *({< output >}.*?{< ?/ ?output >}), \
(?s) *({< highlight .* >}.*?{< ?/ ?highlight >})
```

To ignore an inline section of text, you'll want to define `TokenIgnores`. For
example, let's say we want to ignore math equations of the form `$...$`:

```latex
$\begin{bmatrix} k & k & k \end{bmatrix}^T$
```

Similar to `BlockIgnores`, we just need to define a pattern:

```ini
TokenIgnores = (\$+[^\n$]+\$+)
```

---

## File: website/docs/common/formats/rst.md

reStructuredText is supported through the external program
[`rst2html`](http://docutils.sourceforge.net/docs/user/tools.html#rst2html-py). You can get
`rst2html` by installing either [Sphinx](http://www.sphinx-doc.org/en/stable/) or
[docutils](http://docutils.sourceforge.net/).

By default, literal blocks, inline literals, and `code-block`s are ignored.

---

## File: website/docs/common/formats/xml.md

XML is supported through the external program [`xsltproc`](http://xmlsoft.org/XSLT/xsltproc.html).

You also need to provide a version 1.0 XSL Transformation \(XSLT\) for converting to HTML:

```ini
[*.xml]
Transform = docbook-xsl-snapshot/html/docbook.xsl
```

---

## File: website/docs/common/options/core.md

Core settings appear at the top of the file and apply to the application itself rather than a specific file format.

### `StylesPath`

:::info Heads up!
Vale Server requires that all paths (on both macOS and Windows) use a forward slash (`/`) and be *absolute* file paths.
:::

```ini
# Here's an example of a relative path:
#
# .vale.ini
# ci/
# ├── vale/
# │   ├── styles/
StylesPath = "ci/vale/styles"
```

`StylesPath` specifies where Vale should look for its external resources \(e.g., styles and ignore files\). The path value may be absolute or relative to the location of the parent `.vale.ini` file.

### `MinAlertLevel`

```ini
MinAlertLevel = suggestion
```

`MinAlertLevel` specifies the minimum alert severity that Vale will report. The options are "suggestion", "warning", or "error" \(defaults to "warning"\).

### `IgnoredScopes`

```ini
# By default, `code` and `tt` are ignored.
IgnoredScopes = code, tt
```

`IgnoredScopes` specifies inline-level HTML tags to ignore. In other words, these tags may occur in an active scope \(unlike `SkippedScopes`, which are _skipped_ entirely\) but their content still won't raise any alerts.

### `IgnoredClasses` (v2.2)

`IgnoredClasses` specifies classes to ignore. These classes may appear on both inline- and block-level HTML elements.

```ini
IgnoredClasses = my-class, another-class
```

### `SkippedScopes`

```ini
# By default, `script`, `style`, `pre`, and `figure` are ignored.
SkippedScopes = script, style, pre, figure
```

`SkippedScopes` specifies block-level HTML tags to ignore. Any content in these scopes will be ignored.

### `WordTemplate`

```ini
WordTemplate = \b(?:%s)\b
```

`WordTemplate` specifies what Vale will consider to be an individual word.

---

## File: website/docs/common/options/syntax.md

Format-specific sections apply their settings only to files that match their
associated glob pattern.

For example, `[*]` matches all files while `[*.{md,txt}]` only matches files
that end with either `.md` or `.txt`.

You can have as many format-specific sections as you'd like and settings
defined under a more specific section will override those in `[*]`.

### `BasedOnStyles`

```ini
[*]
BasedOnStyles = Style1, Style2
```

`BasedOnStyles` specifies styles that should have all of their rules enabled.

If you only want to enabled certain rules within a style, you can do so on an individual basis:

```ini
[*]
# Enables only this rule:
Style1.Rule = YES
```

You can also disable individual rules or change their severity level:

```ini
[*]
BasedOnStyles = Style1

Style1.Rule1 = NO
Style1.Rule2 = error
```

### `BlockIgnores`

```ini
[*]
BlockIgnores = (?s) *({< file [^>]* >}.*?{</ ?file >})
```

`BlockIgnores` allow you to exclude certain block-level sections of text that don't have an associated HTML tag that could be used with `SkippedScopes`. See [Non-Standard Markup](/vale-server/concepts/scoping#non-standard-markup) for more information.

### `TokenIgnores`

```ini
[*]
TokenIgnores = (\$+[^\n$]+\$+)
```

`TokenIgnores` allow you to exclude certain inline-level sections of text that don't have an associated HTML tag that could be used with `IgnoredScopes`. See [Non-Standard Markup](/vale-server/concepts/scoping#non-standard-markup) for more information.

### `Transform` (v2.0)

```ini
[*]
Transform = docbook-xsl-snapshot/html/docbook.xsl
```

`Transform` specifies a version 1.0 XSL Transformation \(XSLT\) for converting to HTML. See [Formats\#XML](/vale-server/concepts/scoping#xml-markup) for more information.