mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-21 21:30:47 +02:00
Support JSON front matter as used by the Hugo site generator (fixes #270).
This commit is contained in:
parent
47d82d6fd4
commit
bb157b2ce7
11 changed files with 60 additions and 7 deletions
|
@ -429,11 +429,12 @@ ignores common forms of "front matter". To match differently, specify a custom
|
|||
The default value:
|
||||
|
||||
```js
|
||||
/((^---\s*$[^]*?^---\s*$)|(^\+\+\+\s*$[^]*?^(\+\+\+|\.\.\.)\s*$))(\r\n|\r|\n|$)/m
|
||||
/((^---\s*$[^]*?^---\s*$)|(^\+\+\+\s*$[^]*?^(\+\+\+|\.\.\.)\s*$)|(^\{\s*$[^]*?^\}\s*$))(\r\n|\r|\n|$)/m
|
||||
```
|
||||
|
||||
Ignores [YAML](https://en.wikipedia.org/wiki/YAML) and
|
||||
[TOML](https://en.wikipedia.org/wiki/TOML) such as:
|
||||
Ignores [YAML](https://en.wikipedia.org/wiki/YAML),
|
||||
[TOML](https://en.wikipedia.org/wiki/TOML), and
|
||||
[JSON](https://en.wikipedia.org/wiki/JSON) front matter such as:
|
||||
|
||||
```text
|
||||
---
|
||||
|
|
|
@ -848,7 +848,7 @@ Tags: headings, headers
|
|||
|
||||
Aliases: single-title, single-h1
|
||||
|
||||
Parameters: level, front_matter_title (number; default 1, string; default "^\s*title:")
|
||||
Parameters: level, front_matter_title (number; default 1, string; default "^\s*"?title"?\s*[:=]")
|
||||
|
||||
This rule is triggered when a top level heading is in use (the first line of
|
||||
the file is a h1 heading), and more than one h1 heading is in use in the
|
||||
|
@ -1565,7 +1565,7 @@ Tags: headings, headers
|
|||
|
||||
Aliases: first-line-heading, first-line-h1
|
||||
|
||||
Parameters: level, front_matter_title (number; default 1, string; default "^\s*title:")
|
||||
Parameters: level, front_matter_title (number; default 1, string; default "^\s*"?title"?\s*[:=]")
|
||||
|
||||
This rule is intended to ensure documents have a title and is triggered when
|
||||
the first line in the file isn't a top level (h1) heading:
|
||||
|
|
|
@ -12,7 +12,7 @@ module.exports.newLineRe = newLineRe;
|
|||
// Regular expression for matching common front matter (YAML and TOML)
|
||||
module.exports.frontMatterRe =
|
||||
// eslint-disable-next-line max-len
|
||||
/((^---\s*$[^]*?^---\s*$)|(^\+\+\+\s*$[^]*?^(\+\+\+|\.\.\.)\s*$))(\r\n|\r|\n|$)/m;
|
||||
/((^---\s*$[^]*?^---\s*$)|(^\+\+\+\s*$[^]*?^(\+\+\+|\.\.\.)\s*$)|(^\{\s*$[^]*?^\}\s*$))(\r\n|\r|\n|$)/m;
|
||||
|
||||
// Regular expression for matching inline disable/enable comments
|
||||
const inlineCommentRe =
|
||||
|
@ -502,7 +502,10 @@ module.exports.frontMatterHasTitle =
|
|||
const ignoreFrontMatter =
|
||||
(frontMatterTitlePattern !== undefined) && !frontMatterTitlePattern;
|
||||
const frontMatterTitleRe =
|
||||
new RegExp(String(frontMatterTitlePattern || "^\\s*title\\s*[:=]"), "i");
|
||||
new RegExp(
|
||||
String(frontMatterTitlePattern || "^\\s*\"?title\"?\\s*[:=]"),
|
||||
"i"
|
||||
);
|
||||
return !ignoreFrontMatter &&
|
||||
frontMatterLines.some((line) => frontMatterTitleRe.test(line));
|
||||
};
|
||||
|
|
6
test/front-matter-alt-title-json.json
Normal file
6
test/front-matter-alt-title-json.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"default": true,
|
||||
"MD041": {
|
||||
"front_matter_title": "^\\s*\"alternate\"\\s*:"
|
||||
}
|
||||
}
|
6
test/front-matter-alt-title-json.md
Normal file
6
test/front-matter-alt-title-json.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"date": "2017-01-26T22:17:00+02:00",
|
||||
"alternate": "My document title and heading"
|
||||
}
|
||||
|
||||
Some plain text here.
|
4
test/front-matter-title-json-spaces.json
Normal file
4
test/front-matter-title-json-spaces.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"default": true,
|
||||
"MD041": true
|
||||
}
|
6
test/front-matter-title-json-spaces.md
Normal file
6
test/front-matter-title-json-spaces.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"date": "2017-01-26T22:17:00+02:00",
|
||||
"title": "My document title and heading"
|
||||
}
|
||||
|
||||
Some plain text here.
|
4
test/front-matter-title-json.json
Normal file
4
test/front-matter-title-json.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"default": true,
|
||||
"MD041": true
|
||||
}
|
6
test/front-matter-title-json.md
Normal file
6
test/front-matter-title-json.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"date": "2017-01-26T22:17:00+02:00",
|
||||
"title": "My document title and heading"
|
||||
}
|
||||
|
||||
Some plain text here.
|
4
test/hugo-quickstart-example-json.json
Normal file
4
test/hugo-quickstart-example-json.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"default": true,
|
||||
"MD041": true
|
||||
}
|
13
test/hugo-quickstart-example-json.md
Normal file
13
test/hugo-quickstart-example-json.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"title": "Another Hugo Post",
|
||||
"description": "Nothing special, but one post is boring.",
|
||||
"date": "2014-09-02",
|
||||
"categories": [ "example", "configuration" ],
|
||||
"tags": [
|
||||
"example",
|
||||
"hugo",
|
||||
"toml"
|
||||
],
|
||||
}
|
||||
|
||||
# Heading {MD025}
|
Loading…
Add table
Add a link
Reference in a new issue