unified

Project: remarkjs/remark-lint

Package: remark-lint-checkbox-character-style@4.1.1

  1. Dependents: 0
  2. remark-lint rule to warn when list item checkboxes violate a given style
  1. remark 214
  2. lint 80
  3. rule 75
  4. remark-lint-rule 68
  5. list 12
  6. style 11
  7. checkbox 4
  8. task 4

remark-lint-checkbox-character-style

Build Coverage Downloads Size Sponsors Backers Chat

remark-lint rule to warn when list item checkboxes violate a given style.

Contents

What is this?

This package checks the character used in checkboxes.

When should I use this?

You can use this package to check that the style of GFM tasklists is consistent.

Presets

This plugin is included in the following presets:

PresetOptions
remark-preset-lint-consistent'consistent'

Install

This package is ESM only. In Node.js (version 16+), install with npm:

npm install remark-lint-checkbox-character-style

In Deno with esm.sh:

import remarkLintCheckboxCharacterStyle from 'https://esm.sh/remark-lint-checkbox-character-style@4'

In browsers with esm.sh:

<script type="module">
  import remarkLintCheckboxCharacterStyle from 'https://esm.sh/remark-lint-checkbox-character-style@4?bundle'
</script>

Use

On the API:

import remarkLint from 'remark-lint'
import remarkLintCheckboxCharacterStyle from 'remark-lint-checkbox-character-style'
import remarkParse from 'remark-parse'
import remarkStringify from 'remark-stringify'
import {read} from 'to-vfile'
import {unified} from 'unified'
import {reporter} from 'vfile-reporter'

const file = await read('example.md')

await unified()
  .use(remarkParse)
  .use(remarkLint)
  .use(remarkLintCheckboxCharacterStyle)
  .use(remarkStringify)
  .process(file)

console.error(reporter(file))

On the CLI:

remark --frail --use remark-lint --use remark-lint-checkbox-character-style .

On the CLI in a config file (here a package.json):

 …
 "remarkConfig": {
   "plugins": [
     …
     "remark-lint",
+    "remark-lint-checkbox-character-style",
     …
   ]
 }
 …

API

This package exports no identifiers. It exports the TypeScript types Options and Styles. The default export is remarkLintCheckboxCharacterStyle.

unified().use(remarkLintCheckboxCharacterStyle[, options])

Warn when list item checkboxes violate a given style.

Parameters
Returns

Transform (Transformer from unified).

Options

Configuration (TypeScript type).

Type
type Options = Styles | 'consistent'

Styles

Styles (TypeScript type).

Fields

Recommendation

It’s recommended to set options.checked to 'x' (a lowercase X) as it prevents an extra keyboard press and options.unchecked to '␠' (a space) to make all checkboxes align.

Fix

remark-stringify formats checked checkboxes using 'x' (lowercase X) and unchecked checkboxes using '␠' (a space).

Examples

ok.md

When configured with { checked: 'x' }.

In

👉 Note: this example uses GFM (remark-gfm).

- [x] List item
- [x] List item
Out

No messages.

ok.md

When configured with { checked: 'X' }.

In

👉 Note: this example uses GFM (remark-gfm).

- [X] List item
- [X] List item
Out

No messages.

ok.md

When configured with { unchecked: ' ' }.

In

👉 Note: this example uses GFM (remark-gfm).

- [ ] List item
- [ ] List item
- [ ]␠␠
- [ ]
Out

No messages.

ok.md

When configured with { unchecked: '\t' }.

In

👉 Note: this example uses GFM (remark-gfm).

- [␉] List item
- [␉] List item
Out

No messages.

not-ok.md
In

👉 Note: this example uses GFM (remark-gfm).

- [x] List item
- [X] List item
- [ ] List item
- [␉] List item
Out
2:5: Checked checkboxes should use `x` as a marker
4:5: Unchecked checkboxes should use ` ` as a marker
not-ok.md

When configured with { unchecked: '💩' }.

Out
1:1: Incorrect unchecked checkbox marker `💩`: use either `'\t'`, or `' '`
not-ok.md

When configured with { checked: '💩' }.

Out
1:1: Incorrect checked checkbox marker `💩`: use either `'x'`, or `'X'`

Compatibility

Projects maintained by the unified collective are compatible with maintained versions of Node.js.

When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, remark-lint-checkbox-character-style@4, compatible with Node.js 12.

Contribute

See contributing.md in remarkjs/.github for ways to get started. See support.md for ways to get help.

This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.

License

MIT © Titus Wormer