From ce6e46a2fdb9de1c5f7d1c02e604ba0f8000c335 Mon Sep 17 00:00:00 2001 From: Rogan Creswick Date: Thu, 21 Nov 2013 17:07:16 -0800 Subject: added some initial wikipedia guidelines --- guidelines/wikipedia/headingOrder.js | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 guidelines/wikipedia/headingOrder.js (limited to 'guidelines/wikipedia/headingOrder.js') 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; + }); +}; -- cgit v1.2.3