Fix MD038 to handle text matches outside code span elements.

This commit is contained in:
David Anson 2016-11-10 20:57:13 -08:00
parent 0f64bd5b4e
commit 74bd9b6e5b
2 changed files with 23 additions and 4 deletions

View file

@ -933,15 +933,18 @@ module.exports = [
"func": function MD038(params, errors) {
forEachInlineChild(params, "code_inline",
function forToken(token, inline) {
var backtickPairs = "^(?:[^`]*`[^`]*`)*[^`]*";
var escapedContent = escapeForRegExp(token.content);
var left = (new RegExp("`\\s+" + escapedContent + "\\s*`"))
var left = (new RegExp(
backtickPairs + "(`\\s+" + escapedContent + "\\s*`)"))
.exec(inline.content);
var right = (new RegExp("`\\s*" + escapedContent + "\\s+`"))
var right = (new RegExp(
backtickPairs + "(`\\s*" + escapedContent + "\\s+`)"))
.exec(inline.content);
if (left) {
errors.addContext(token.lineNumber, left[0]);
errors.addContext(token.lineNumber, left[1]);
} else if (right) {
errors.addContext(token.lineNumber, right[0], false, true);
errors.addContext(token.lineNumber, right[1], false, true);
}
});
}

View file

@ -5,3 +5,19 @@
`codespan element with space inside right ` {MD038}
` codespan element with spaces inside ` {MD038}
`,`, `.`
`,`, `code`
`[`, `(`, `+`, `*`, `/`, `-`, `,`, `.`
`code` code `anything`
text `code` code `anything` text
text `code` text `anything` code `end`
text `anything` code `code` text `end`
text `anything` text `anything` code `anything` `code`