mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 22:40:13 +01:00
Update MD024/no-duplicate-heading to allow non-sibling duplicates (fixes #136).
This commit is contained in:
parent
4865301ce9
commit
d76ede1c4f
10 changed files with 246 additions and 15 deletions
7
test/heading-duplicate-content-siblings-only.json
Normal file
7
test/heading-duplicate-content-siblings-only.json
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"default": true,
|
||||
"MD003": false,
|
||||
"MD024": {
|
||||
"siblings_only": true
|
||||
}
|
||||
}
|
||||
96
test/heading-duplicate-content-siblings-only.md
Normal file
96
test/heading-duplicate-content-siblings-only.md
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
# Heading duplicate content siblings only
|
||||
|
||||
# A
|
||||
|
||||
{MD025:3}
|
||||
|
||||
## B
|
||||
|
||||
### C
|
||||
|
||||
## B
|
||||
|
||||
{MD024:11}
|
||||
|
||||
### C
|
||||
|
||||
## D
|
||||
|
||||
### C
|
||||
|
||||
### E
|
||||
|
||||
### C
|
||||
|
||||
{MD024:23}
|
||||
|
||||
##### F
|
||||
|
||||
{MD001:27}
|
||||
|
||||
#### G
|
||||
|
||||
##### F
|
||||
|
||||
#### G
|
||||
|
||||
{MD024:35}
|
||||
|
||||
### E
|
||||
|
||||
{MD024:39}
|
||||
|
||||
# A
|
||||
|
||||
{MD024:43} {MD025:43}
|
||||
|
||||
## B
|
||||
|
||||
### C
|
||||
|
||||
## B
|
||||
|
||||
{MD024:51}
|
||||
|
||||
# Heading duplicate content siblings only
|
||||
|
||||
{MD024:55} {MD025:55}
|
||||
|
||||
AA
|
||||
==
|
||||
|
||||
{MD025:59}
|
||||
|
||||
AA
|
||||
--
|
||||
|
||||
BB
|
||||
--
|
||||
|
||||
CC
|
||||
--
|
||||
|
||||
BB
|
||||
--
|
||||
|
||||
{MD024:73}
|
||||
|
||||
BB
|
||||
==
|
||||
|
||||
{MD025:78}
|
||||
|
||||
BB
|
||||
--
|
||||
|
||||
## AAA ##
|
||||
|
||||
### BBB ###
|
||||
|
||||
## BBB ##
|
||||
|
||||
### BBB ###
|
||||
|
||||
## BBB ##
|
||||
|
||||
{MD024:94}
|
||||
6
test/heading_duplicate_content_different_nesting.json
Normal file
6
test/heading_duplicate_content_different_nesting.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"default": true,
|
||||
"MD024": {
|
||||
"allow_different_nesting": true
|
||||
}
|
||||
}
|
||||
11
test/heading_duplicate_content_different_nesting.md
Normal file
11
test/heading_duplicate_content_different_nesting.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Change log
|
||||
|
||||
## 2.0.0
|
||||
|
||||
### Bug fixes
|
||||
|
||||
### Features
|
||||
|
||||
## 1.0.0
|
||||
|
||||
### Bug fixes
|
||||
13
test/heading_duplicate_content_no_different_nesting.md
Normal file
13
test/heading_duplicate_content_no_different_nesting.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Change log
|
||||
|
||||
## 2.0.0
|
||||
|
||||
### Bug fixes
|
||||
|
||||
### Features
|
||||
|
||||
## 1.0.0
|
||||
|
||||
### Bug fixes
|
||||
|
||||
{MD024:11}
|
||||
|
|
@ -1117,7 +1117,7 @@ module.exports.readme = function readme(test) {
|
|||
};
|
||||
|
||||
module.exports.doc = function doc(test) {
|
||||
test.expect(310);
|
||||
test.expect(311);
|
||||
fs.readFile("doc/Rules.md", shared.utf8Encoding,
|
||||
function readFile(err, contents) {
|
||||
test.ifError(err);
|
||||
|
|
@ -1131,11 +1131,11 @@ module.exports.doc = function doc(test) {
|
|||
function testTagsAliasesParams(r) {
|
||||
r = r || "[NO RULE]";
|
||||
test.ok(ruleHasTags,
|
||||
"Missing tags for rule " + r.toString() + ".");
|
||||
"Missing tags for rule " + r.names + ".");
|
||||
test.ok(ruleHasAliases,
|
||||
"Missing aliases for rule " + r.toString() + ".");
|
||||
"Missing aliases for rule " + r.names + ".");
|
||||
test.ok(!ruleUsesParams,
|
||||
"Missing parameters for rule " + r.toString() + ".");
|
||||
"Missing parameters for rule " + r.names + ".");
|
||||
}
|
||||
md.parse(contents, {}).forEach(function forToken(token) {
|
||||
if ((token.type === "heading_open") && (token.tag === "h2")) {
|
||||
|
|
@ -1161,12 +1161,12 @@ module.exports.doc = function doc(test) {
|
|||
}
|
||||
} else if (/^Tags: /.test(token.content) && rule) {
|
||||
test.deepEqual(token.content.split(tagAliasParameterRe).slice(1),
|
||||
rule.tags, "Tag mismatch for rule " + rule.toString() + ".");
|
||||
rule.tags, "Tag mismatch for rule " + rule.names + ".");
|
||||
ruleHasTags = true;
|
||||
} else if (/^Aliases: /.test(token.content) && rule) {
|
||||
test.deepEqual(token.content.split(tagAliasParameterRe).slice(1),
|
||||
rule.names.slice(1),
|
||||
"Alias mismatch for rule " + rule.toString() + ".");
|
||||
"Alias mismatch for rule " + rule.names + ".");
|
||||
ruleHasAliases = true;
|
||||
} else if (/^Parameters: /.test(token.content) && rule) {
|
||||
let inDetails = false;
|
||||
|
|
@ -1177,7 +1177,7 @@ module.exports.doc = function doc(test) {
|
|||
return !inDetails;
|
||||
});
|
||||
test.deepEqual(parameters, ruleUsesParams,
|
||||
"Missing parameter for rule " + rule.toString());
|
||||
"Missing parameter for rule " + rule.names);
|
||||
ruleUsesParams = null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1185,7 +1185,7 @@ module.exports.doc = function doc(test) {
|
|||
const ruleLeft = rulesLeft.shift();
|
||||
test.ok(!ruleLeft,
|
||||
"Missing rule documentation for " +
|
||||
(ruleLeft || "[NO RULE]").toString() + ".");
|
||||
(ruleLeft || { "names": "[NO RULE]" }).names + ".");
|
||||
if (rule) {
|
||||
testTagsAliasesParams(rule);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue