mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 06:20:12 +01:00
Update fence logic to handle nested fences (per CommonMark spec; no handling of indentation).
http://spec.commonmark.org/0.22/#fenced-code-blocks
This commit is contained in:
parent
5e3d9f8df4
commit
bb0d8a36b3
2 changed files with 79 additions and 1 deletions
|
|
@ -40,12 +40,17 @@ function filterTokens(params, type, callback) {
|
||||||
function forEachLine(params, callback) {
|
function forEachLine(params, callback) {
|
||||||
if (!params.forEachLine) {
|
if (!params.forEachLine) {
|
||||||
var lineMetadata = new Array(params.lines.length);
|
var lineMetadata = new Array(params.lines.length);
|
||||||
|
var fenceStart = null;
|
||||||
var inFence = false;
|
var inFence = false;
|
||||||
// Find fenced code by pattern (parser ignores "``` close fence")
|
// Find fenced code by pattern (parser ignores "``` close fence")
|
||||||
params.lines.forEach(function forLine(line, lineIndex) {
|
params.lines.forEach(function forLine(line, lineIndex) {
|
||||||
var metadata = 0;
|
var metadata = 0;
|
||||||
if (/^(```|~~~)/.test(line)) {
|
var match = /^(`{3,}|~{3,})/.exec(line);
|
||||||
|
var fence = match && match[1];
|
||||||
|
if (fence &&
|
||||||
|
(!inFence || (fence.substr(0, fenceStart.length) === fenceStart))) {
|
||||||
metadata = inFence ? -2 : 2;
|
metadata = inFence ? -2 : 2;
|
||||||
|
fenceStart = inFence ? null : fence;
|
||||||
inFence = !inFence;
|
inFence = !inFence;
|
||||||
} else if (inFence) {
|
} else if (inFence) {
|
||||||
metadata = 1;
|
metadata = 1;
|
||||||
|
|
|
||||||
73
test/fenced_code_with_nesting.md
Normal file
73
test/fenced_code_with_nesting.md
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
# header
|
||||||
|
|
||||||
|
text
|
||||||
|
```fence {MD031}
|
||||||
|
code
|
||||||
|
``` {MD031}
|
||||||
|
text
|
||||||
|
~~~fence {MD031}
|
||||||
|
code
|
||||||
|
~~~ {MD031}
|
||||||
|
text
|
||||||
|
```fence {MD031}
|
||||||
|
~~~fence
|
||||||
|
code
|
||||||
|
~~~
|
||||||
|
``` {MD031}
|
||||||
|
text
|
||||||
|
~~~fence {MD031}
|
||||||
|
```fence
|
||||||
|
code
|
||||||
|
```
|
||||||
|
~~~ {MD031}
|
||||||
|
text
|
||||||
|
```fence {MD031}
|
||||||
|
|
||||||
|
~~~fence
|
||||||
|
code
|
||||||
|
~~~
|
||||||
|
|
||||||
|
``` {MD031}
|
||||||
|
text
|
||||||
|
~~~fence {MD031}
|
||||||
|
|
||||||
|
```fence
|
||||||
|
code
|
||||||
|
```
|
||||||
|
|
||||||
|
~~~ {MD031}
|
||||||
|
text
|
||||||
|
```fence {MD031}
|
||||||
|
code
|
||||||
|
~~~
|
||||||
|
``` {MD031}
|
||||||
|
text
|
||||||
|
~~~fence {MD031}
|
||||||
|
code
|
||||||
|
```
|
||||||
|
~~~ {MD031}
|
||||||
|
text
|
||||||
|
````fence {MD031}
|
||||||
|
```fence
|
||||||
|
code
|
||||||
|
```
|
||||||
|
```` {MD031}
|
||||||
|
text
|
||||||
|
~~~~fence {MD031}
|
||||||
|
~~~fence
|
||||||
|
code
|
||||||
|
~~~
|
||||||
|
~~~~ {MD031}
|
||||||
|
text
|
||||||
|
````fence {MD031}
|
||||||
|
```fence
|
||||||
|
code
|
||||||
|
```
|
||||||
|
````` {MD031}
|
||||||
|
text
|
||||||
|
~~~~fence {MD031}
|
||||||
|
~~~fence
|
||||||
|
code
|
||||||
|
~~~
|
||||||
|
~~~~~ {MD031}
|
||||||
|
text
|
||||||
Loading…
Add table
Add a link
Reference in a new issue