Ignore the content of (valid) HTML comments when linting (fixes #64).

This commit is contained in:
David Anson 2017-07-16 23:08:47 -07:00
parent 8c34383f80
commit 0a678d25c1
6 changed files with 240 additions and 2 deletions

44
test/ignore-comments.md Normal file
View file

@ -0,0 +1,44 @@
# ignore-comments.md
Hard tab {MD010}
<!-- Hard tab -->
<!--Hard tab-->
<!--
Hard tab
-->
<!--
Hard tab
Hard tab
-->
<!--
Hard tab {MD010}
Invalid--comment
Hard tab {MD010}
-->
Te<!-- Hard tab -->xt
Te<!-- Hard tab -->xt {MD009}
T<!-- Hard tab -->ex<!-- Hard tab -->t
Te<!--
Hard tab
-->xt
Te<!--
Hard tab
-->xt {MD009}
Te<!-- Trailing space
-->xt
<!-- markdownlint-disable MD010 -->
Hard tab

View file

@ -1142,6 +1142,158 @@ module.exports.validateConfigSchema = function validateConfigSchema(test) {
test.done();
};
module.exports.clearHtmlCommentTextValid =
function clearHtmlCommentTextValid(test) {
test.expect(1);
var validComments = [
"<!-- text -->",
"<!--text-->",
"<!-- -->",
"<!---->",
"<!---text-->",
"<!--text-text-->",
"<!--- -->",
"<!--",
"-->",
"<!--",
"",
"-->",
"<!--",
"",
"",
"-->",
"<!--",
"",
" text ",
"",
"-->",
"<!--text",
"",
"text-->",
"text<!--text-->text",
"text<!--",
"-->text",
"text<!--",
"text",
"-->text",
"<!--text--><!--text-->",
"text<!--text-->text<!--text-->text",
"<!--",
"text"
];
var validResult = [
"<!-- -->",
"<!-- -->",
"<!-- -->",
"<!---->",
"<!-- -->",
"<!-- -->",
"<!-- -->",
"<!--",
"-->",
"<!--",
"",
"-->",
"<!--",
"",
"",
"-->",
"<!--",
"",
" \\",
"",
"-->",
"<!-- \\",
"",
" -->",
"text<!-- -->text",
"text<!--",
"-->text",
"text<!--",
" \\",
"-->text",
"<!-- --><!-- -->",
"text<!-- -->text<!-- -->text",
"<!--",
" \\"
];
var actual = shared.clearHtmlCommentText(validComments.join("\n"));
var expected = validResult.join("\n");
test.equal(actual, expected);
test.done();
};
module.exports.clearHtmlCommentTextInvalid =
function clearHtmlCommentTextInvalid(test) {
test.expect(1);
var invalidComments = [
"<!>",
"<!->",
"<!-->",
"<!--->",
"<!-->-->",
"<!--->-->",
"<!----->",
"<!------>",
"<!-- -- -->",
"<!-->-->",
"<!--> -->",
"<!--->-->",
"<!-->text-->",
"<!--->text-->",
"<!--text--->",
"<!--te--xt-->"
];
var actual = shared.clearHtmlCommentText(invalidComments.join("\n"));
var expected = invalidComments.join("\n");
test.equal(actual, expected);
test.done();
};
module.exports.clearHtmlCommentTextNonGreedy =
function clearHtmlCommentTextNonGreedy(test) {
test.expect(1);
var nonGreedyComments = [
"<!-- text --> -->",
"<!---text --> -->",
"<!--t--> -->",
"<!----> -->"
];
var nonGreedyResult = [
"<!-- --> -->",
"<!-- --> -->",
"<!-- --> -->",
"<!----> -->"
];
var actual = shared.clearHtmlCommentText(nonGreedyComments.join("\n"));
var expected = nonGreedyResult.join("\n");
test.equal(actual, expected);
test.done();
};
module.exports.clearHtmlCommentTextEmbedded =
function clearHtmlCommentTextEmbedded(test) {
test.expect(1);
var embeddedComments = [
"text<!--text-->text",
"<!-- markdownlint-disable MD010 -->",
"text<!--text-->text",
"text<!-- markdownlint-disable MD010 -->text",
"text<!--text-->text"
];
var embeddedResult = [
"text<!-- -->text",
"<!-- markdownlint-disable MD010 -->",
"text<!-- -->text",
"text<!-- markdownlint-disable MD010 -->text",
"text<!-- -->text"
];
var actual = shared.clearHtmlCommentText(embeddedComments.join("\n"));
var expected = embeddedResult.join("\n");
test.equal(actual, expected);
test.done();
};
module.exports.trimPolyfills = function trimPolyfills(test) {
var inputs = [
"text text",