markdownlint/helpers
2023-08-09 20:32:10 -07:00
..
helpers.js Reimplement MD051/link-fragments using micromark tokens, report reference link issues for definition and fix when possible, handle reporting multiple violations on the same line better. 2023-08-04 20:53:38 -07:00
LICENSE Remove years from copyright statements. 2023-01-14 15:11:48 -08:00
micromark.cjs Update MD022/blanks-around-headings to allow specifying a different number of blank lines for each heading level (fixes #504). 2023-08-08 22:56:59 -07:00
package.json Update to version 0.30.0. 2023-08-09 20:32:10 -07:00
README.md Add example for markdownlint-rule-helpers.applyFixes to documentation (fixes #663). 2022-12-04 15:17:56 -08:00
shared.js Refactor to move reparse of micromark htmlFlow token content into core micromarkParse implementation for simplicity and sharing. 2023-07-21 22:49:08 -07:00

markdownlint-rule-helpers

A collection of markdownlint helper functions for custom rules

Overview

The Markdown linter markdownlint offers a variety of built-in validation rules and supports the creation of custom rules. The internal rules share various helper functions; this package exposes those for reuse by custom rules.

API

Undocumented - This package exports the internal functions as-is. The APIs were not originally meant to be public, are not officially supported, and may change from release to release. There are brief descriptive comments above each function, but no JSDoc annotations. That said, some of what's here will be useful to custom rule authors and may avoid duplicating code.

Examples

Using Helpers from a Custom Rule

const { forEachLine, getLineMetadata } = require("markdownlint-rule-helpers");

module.exports = {
  "names": [ "every-n-lines" ],
  "description": "Rule that reports an error every N lines",
  "tags": [ "test" ],
  "function": (params, onError) => {
    const n = params.config.n || 2;
    forEachLine(getLineMetadata(params), (line, lineIndex) => {
      const lineNumber = lineIndex + 1;
      if ((lineNumber % n) === 0) {
        onError({
          "lineNumber": lineNumber,
          "detail": "Line number " + lineNumber
        });
      }
    });
  }
};
const { "sync": markdownlintSync } = require("markdownlint");
const markdownlintRuleHelpers = require("markdownlint-rule-helpers");

function fixMarkdownlintViolations(content) {
  const fixResults = markdownlintSync({ strings: { content } });
  return markdownlintRuleHelpers.applyFixes(content, fixResults.content);
}

See also: markdownlint built-in rule implementations.

Tests

None - The entire body of code is tested to 100% coverage by the core markdownlint project, so there are no additional tests here.