diff options
author | Rogan Creswick <creswick@gmail.com> | 2013-11-21 17:07:16 -0800 |
---|---|---|
committer | Rogan Creswick <creswick@gmail.com> | 2013-11-21 17:07:16 -0800 |
commit | ce6e46a2fdb9de1c5f7d1c02e604ba0f8000c335 (patch) | |
tree | dc2ec49876cf77bafa62e983fd35fe9129cdc9a3 /guidelines/wikipedia/headingOrder.js | |
parent | 10ed952cfb757727f8ac81ff3ca82fe0b0148085 (diff) |
added some initial wikipedia guidelines
Diffstat (limited to 'guidelines/wikipedia/headingOrder.js')
-rw-r--r-- | guidelines/wikipedia/headingOrder.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/guidelines/wikipedia/headingOrder.js b/guidelines/wikipedia/headingOrder.js new file mode 100644 index 0000000..0875d4a --- /dev/null +++ b/guidelines/wikipedia/headingOrder.js @@ -0,0 +1,51 @@ +/** + * Layout rules for Wikipedia article content + */ +exports.name = "Headings should be in order."; +exports.description = "Headers should increase sequentially, or reset to a higher section level."; + +exports.rule = function(report) { + findH1s(report); + + checkHeadingOrder(report); +}; + +/** + * No H1 headings should be used in the article content. + */ +var findH1s = function(report) { + $5('#mw-content-text h1').each( + function(idx, elt){ + report.error("Top-level headings should not be used in article content."); + }); +}; + + +/** + * Check that headers increase one step at a time, or go back to the + * beginning (in this case, heading 2). + * + * Headers using the <header> tag are except from this check. + */ +var checkHeadingOrder = function(report) { + var last=1; + + $5('#mw-content-text :header').each( + function(idx, elt){ + if (elt.tagName == 'header') { + return; + } + + // parse the level out of 'h1', 'h2', 'h3', etc. + var level = parseInt(elt.tagName.substring(1,2)); + + if (level > (last + 1)) { + report.error("Heading is out of order; heading level was: "+level+ + " but last level was: "+last, elt); + } + // set the level regardless, since the error *could* be with the + // prior level heading, so we don't want to cause more errors + // erroniously: + last = level; + }); +}; |