Update MD003 to support setext_with_atx.

This commit is contained in:
David Anson 2015-07-29 22:17:33 -07:00
parent c2aff32460
commit fd1215d143
4 changed files with 33 additions and 5 deletions

View file

@ -53,7 +53,7 @@ The first header in the document should be a h1 header:
Tags: headers Tags: headers
Parameters: style ("consistent", "atx", "atx_closed", "setext"; default "consistent") Parameters: style ("consistent", "atx", "atx_closed", "setext", "setext_with_atx"; default "consistent")
This rule is triggered when different header styles (atx, setext, and 'closed' This rule is triggered when different header styles (atx, setext, and 'closed'
atx) are used in the same document: atx) are used in the same document:
@ -71,9 +71,20 @@ Be consistent with the style of header used in a document:
## ATX style H2 ## ATX style H2
The setext_with_atx doc style allows atx-style headers of level 3 or more in
documents with setext style headers:
Setext style H1
===============
Setext style H2
---------------
### ATX style H3
Note: the configured header style can be a specific style to use (atx, Note: the configured header style can be a specific style to use (atx,
atx_closed, setext), or simply require that the usage be consistent within the atx_closed, setext, setext_with_atx), or simply require that the usage be
document. consistent within the document.
## MD004 - Unordered list style ## MD004 - Unordered list style

View file

@ -173,10 +173,14 @@ module.exports = [
"func": function MD003(params, errors) { "func": function MD003(params, errors) {
var style = params.options.style || "consistent"; var style = params.options.style || "consistent";
filterTokens(params, "heading_open", function forToken(token) { filterTokens(params, "heading_open", function forToken(token) {
var styleForToken = headingStyleFor(token);
if (style === "consistent") { if (style === "consistent") {
style = headingStyleFor(token); style = styleForToken;
} }
if (headingStyleFor(token) !== style) { if ((styleForToken !== style) &&
!((style === "setext_with_atx") &&
(/h[12]/.test(token.tag) && (styleForToken === "setext")) ||
(/h[^12]/.test(token.tag) && (styleForToken === "atx")))) {
errors.push(token.lineNumber); errors.push(token.lineNumber);
} }
}); });

View file

@ -0,0 +1,6 @@
{
"default": true,
"MD003": {
"style": "setext_with_atx"
}
}

View file

@ -0,0 +1,7 @@
Header 1
========
Header 2
--------
### Header 3