Refactor to externalise lib/utilities/

This commit is contained in:
Titus Wormer 2015-07-05 17:29:24 +02:00
parent 950a87cea3
commit eb78529ef0
60 changed files with 765 additions and 1048 deletions

View File

@ -11,7 +11,12 @@
],
"repository": "wooorm/mdast-lint",
"dependencies": {
"wooorm/mdast-message-sort": "^0.1.0",
"wooorm/mdast-range": "^0.4.0",
"wooorm/mdast-util-heading-style": "^0.1.0",
"wooorm/mdast-util-position": "^0.2.0",
"wooorm/mdast-util-to-string": "^0.1.0",
"wooorm/mdast-util-visit": "^0.1.1",
"wooorm/mdast-zone": "^0.2.1"
},
"scripts": [

View File

@ -10,8 +10,8 @@
'use strict';
var position = require('./utilities/position');
var visit = require('./utilities/visit');
var position = require('mdast-util-position');
var visit = require('mdast-util-visit');
/**
* Remove warnings which are disabled, or are in gaps.
@ -35,7 +35,7 @@ function transformer(ast, file) {
* @param {number?} [latest] - Last found position.
*/
function update(latest) {
if (latest === undefined) {
if (latest === undefined || latest === null) {
isGap = true;
return;
@ -68,6 +68,7 @@ function transformer(ast, file) {
}
});
if (offset === position.end(lastNode).offset) {
update();
update(file.toString().length - 1);

View File

@ -14,8 +14,8 @@
var range = require('mdast-range');
var zone = require('mdast-zone');
var sort = require('mdast-message-sort');
var internals = require('./rules');
var sort = require('./sort');
var filter = require('./filter');
/*

View File

@ -32,10 +32,10 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var toString = require('../utilities/to-string');
var visit = require('mdast-util-visit');
var toString = require('mdast-util-to-string');
var plural = require('../utilities/plural');
var position = require('../utilities/position');
var position = require('mdast-util-position');
/**
* Get the indent of a blockquote.
@ -75,7 +75,7 @@ function blockquoteIndentation(ast, file, preferred, done) {
var diff;
var word;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -49,8 +49,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -132,7 +132,7 @@ function checkboxCharacterStyle(ast, file, preferred, done) {
if (
node.checked !== Boolean(node.checked) ||
position.isGenerated(node)
position.generated(node)
) {
return;
}

View File

@ -24,8 +24,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -56,7 +56,7 @@ function checkboxContentIndent(ast, file, preferred, done) {
if (
node.checked !== Boolean(node.checked) ||
position.isGenerated(node)
position.generated(node)
) {
return;
}

View File

@ -42,8 +42,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -95,7 +95,7 @@ function codeBlockStyle(ast, file, preferred, done) {
var initial = start(node).offset;
var final = end(node).offset;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return null;
}

View File

@ -18,8 +18,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Expressions.
@ -50,7 +50,7 @@ function definitionCase(ast, file, preferred, done) {
var end = position.end(node).offset;
var label;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -18,8 +18,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Expressions.
@ -50,7 +50,7 @@ function definitionSpacing(ast, file, preferred, done) {
var end = position.end(node).offset;
var label;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -27,8 +27,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Map of valid markers.
@ -61,7 +61,7 @@ function emphasisMarker(ast, file, preferred, done) {
visit(ast, 'emphasis', function (node) {
var marker = file.toString().charAt(position.start(node).offset);
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -45,8 +45,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -82,7 +82,7 @@ function fencedCodeFlag(ast, file, preferred, done) {
visit(ast, 'code', function (node) {
var value = contents.slice(start(node).offset, end(node).offset);
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -45,8 +45,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Map of valid markers.
@ -81,7 +81,7 @@ function fencedCodeMarker(ast, file, preferred, done) {
visit(ast, 'code', function (node) {
var marker = contents.substr(position.start(node).offset, 4);
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -24,8 +24,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -52,7 +52,7 @@ function finalDefinition(ast, file, preferred, done) {
* Ignore generated nodes.
*/
if (node.type === 'root' || position.isGenerated(node)) {
if (node.type === 'root' || position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when the first heading has a level other than `1`.
@ -35,7 +35,7 @@ var position = require('../utilities/position');
*/
function firstHeadingLevel(ast, file, preferred, done) {
visit(ast, 'heading', function (node) {
if (position.isGenerated(node)) {
if (position.generated(node)) {
return null;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when too many spaces are used to create a
@ -41,7 +41,7 @@ function hardBreakSpaces(ast, file, preferred, done) {
var start = position.start(node).offset;
var end = position.end(node).offset;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when headings increment with more than 1 level at
@ -42,7 +42,7 @@ function headingIncrement(ast, file, preferred, done) {
visit(ast, 'heading', function (node) {
var depth = node.depth;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -50,9 +50,9 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var style = require('../utilities/heading-style');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var style = require('mdast-util-heading-style');
var position = require('mdast-util-position');
/*
* Types.
@ -75,7 +75,7 @@ function headingStyle(ast, file, preferred, done) {
preferred = TYPES.indexOf(preferred) === -1 ? null : preferred;
visit(ast, 'heading', function (node) {
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -36,8 +36,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Map of valid markers.
@ -90,7 +90,7 @@ function linkTitleStyle(ast, file, preferred, done) {
var character;
var pos;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -20,8 +20,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
var plural = require('../utilities/plural');
/*
@ -50,7 +50,7 @@ function listItemBulletIndent(ast, file, preferred, done) {
var final = start(head).offset;
var indent;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
var plural = require('../utilities/plural');
/*
@ -54,7 +54,7 @@ function listItemContentIndent(ast, file, preferred, done) {
var diff;
var word;
if (position.isGenerated(item)) {
if (position.generated(item)) {
return;
}

View File

@ -45,8 +45,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
var plural = require('../utilities/plural');
/*
@ -92,7 +92,7 @@ function listItemIndent(ast, file, preferred, done) {
var isOrdered = node.ordered;
var offset = node.start || 1;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -39,8 +39,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -65,7 +65,7 @@ function listItemSpacing(ast, file, preferred, done) {
var indent = start(node).column;
var type;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -23,9 +23,9 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var toString = require('../utilities/to-string');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var toString = require('mdast-util-to-string');
var position = require('mdast-util-position');
/**
* Warn when headings are too long.
@ -40,7 +40,7 @@ function maximumHeadingLength(ast, file, preferred, done) {
preferred = isNaN(preferred) || typeof preferred !== 'number' ? 60 : preferred;
visit(ast, 'heading', function (node) {
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -35,8 +35,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -100,7 +100,7 @@ function maximumLineLength(ast, file, preferred, done) {
var initial = applicable && start(node).line;
var final = applicable && end(node).line;
if (!applicable || position.isGenerated(node)) {
if (!applicable || position.generated(node)) {
return;
}
@ -126,7 +126,7 @@ function maximumLineLength(ast, file, preferred, done) {
* Nothing to whitelist when generated.
*/
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -20,9 +20,9 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var toString = require('../utilities/to-string');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var toString = require('mdast-util-to-string');
var position = require('mdast-util-position');
/*
* Methods.
@ -65,7 +65,7 @@ function noAutoLinkWithoutProtocol(ast, file, preferred, done) {
var initial = start(node).column;
var final = end(node).column;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when blank lines without carets are found in a
@ -42,7 +42,7 @@ function noBlockquoteWithoutCaret(ast, file, preferred, done) {
var start = position.start(node).line;
var indent = node.position && node.position.indent;
if (position.isGenerated(node) || !indent || !indent.length) {
if (position.generated(node) || !indent || !indent.length) {
return;
}

View File

@ -24,8 +24,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
var plural = require('../utilities/plural');
/*
@ -66,7 +66,7 @@ function noConsecutiveBlankLines(ast, file, preferred, done) {
visit(ast, function (node) {
var children = node.children;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}
@ -85,7 +85,11 @@ function noConsecutiveBlankLines(ast, file, preferred, done) {
var prev = children[index - 1];
var max = MAX;
if (!prev) {
if (
!prev ||
position.generated(prev) ||
position.generated(child)
) {
return;
}

View File

@ -20,8 +20,8 @@
* Dependencies.
*/
var position = require('../utilities/position');
var visit = require('../utilities/visit');
var position = require('mdast-util-position');
var visit = require('mdast-util-visit');
/**
* Warn when definitions with equal content are found.
@ -45,7 +45,7 @@ function noDuplicateDefinitions(ast, file, preferred, done) {
var duplicate = map[node.identifier];
var pos;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -24,9 +24,9 @@
* Dependencies.
*/
var position = require('../utilities/position');
var visit = require('../utilities/visit');
var toString = require('../utilities/to-string');
var position = require('mdast-util-position');
var visit = require('mdast-util-visit');
var toString = require('mdast-util-to-string');
/**
* Warn when headings with equal content are found.
@ -46,7 +46,7 @@ function noDuplicateHeadings(ast, file, preferred, done) {
var duplicate = map[value];
var pos;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -26,9 +26,9 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var toString = require('../utilities/to-string');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var toString = require('mdast-util-to-string');
var position = require('mdast-util-position');
/**
* Warn when a section (a new paragraph) is introduced
@ -47,7 +47,7 @@ function noEmphasisAsHeading(ast, file, preferred, done) {
var next = parent.children[index + 1];
var value;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -27,10 +27,10 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var style = require('../utilities/heading-style');
var visit = require('mdast-util-visit');
var style = require('mdast-util-heading-style');
var plural = require('../utilities/plural');
var position = require('../utilities/position');
var position = require('mdast-util-position');
/*
* Methods.
@ -62,7 +62,7 @@ function noHeadingContentIndent(ast, file, preferred, done) {
var word;
var index;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -35,9 +35,9 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var visit = require('mdast-util-visit');
var plural = require('../utilities/plural');
var position = require('../utilities/position');
var position = require('mdast-util-position');
/*
* Methods.
@ -65,7 +65,7 @@ function noHeadingIndent(ast, file, preferred, done) {
var character;
var diff;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -32,9 +32,9 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var toString = require('../utilities/to-string');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
var toString = require('mdast-util-to-string');
/**
* Warn when headings end in some characters.
@ -50,7 +50,7 @@ function noHeadingPunctuation(ast, file, preferred, done) {
visit(ast, 'heading', function (node) {
var value = toString(node);
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -21,8 +21,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when HTML nodes are used.
@ -34,7 +34,7 @@ var position = require('../utilities/position');
*/
function html(ast, file, preferred, done) {
visit(ast, 'html', function (node) {
if (!position.isGenerated(node) && !/^\s*<!--/.test(node.value)) {
if (!position.generated(node) && !/^\s*<!--/.test(node.value)) {
file.warn('Do not use HTML in markdown', node);
}
});

View File

@ -21,9 +21,9 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var toString = require('../utilities/to-string');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
var toString = require('mdast-util-to-string');
/**
* Warn when inline nodes are padded with spaces between
@ -39,7 +39,7 @@ function noInlinePadding(ast, file, preferred, done) {
var type = node.type;
var contents;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -18,8 +18,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -43,7 +43,7 @@ function noLiteralURLs(ast, file, preferred, done) {
var initial = start(node).column;
var final = end(node).column;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -21,8 +21,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Check if `node` is an applicable block-level node.
@ -57,7 +57,7 @@ function noMissingBlankLines(ast, file, preferred, done) {
visit(ast, function (node, index, parent) {
var next = parent && parent.children[index + 1];
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when multiple top-level headings are used.
@ -39,7 +39,7 @@ function noMultipleToplevelHeadings(ast, file, preferred, done) {
visit(ast, 'heading', function (node) {
var pos;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -34,8 +34,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* List of shell script file extensions (also used as code
@ -71,7 +71,7 @@ function noShellDollars(ast, file, preferred, done) {
var value = node.value;
var warn;
if (!language || position.isGenerated(node)) {
if (!language || position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when shortcut reference images are used.
@ -35,7 +35,7 @@ var position = require('../utilities/position');
*/
function noShortcutReferenceImage(ast, file, preferred, done) {
visit(ast, 'imageReference', function (node) {
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when shortcut reference links are used.
@ -35,7 +35,7 @@ var position = require('../utilities/position');
*/
function noShortcutReferenceLink(ast, file, preferred, done) {
visit(ast, 'linkReference', function (node) {
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/**
* Warn when a table has a too much indentation.
@ -37,7 +37,7 @@ function noTableIndentation(ast, file, preferred, done) {
visit(ast, 'table', function (node) {
var contents = file.toString();
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -32,8 +32,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -86,7 +86,7 @@ function orderedListMarkerStyle(ast, file, preferred, done) {
var final = start(head).offset;
var marker;
if (position.isGenerated(item)) {
if (position.generated(item)) {
return;
}

View File

@ -48,8 +48,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -128,7 +128,7 @@ function orderedListMarkerValue(ast, file, preferred, done) {
* Ignore generated nodes.
*/
if (position.isGenerated(item)) {
if (position.generated(item)) {
return;
}

View File

@ -25,8 +25,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -72,7 +72,7 @@ function ruleStyle(ast, file, preferred, done) {
var final = end(node).offset;
var hr;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -27,8 +27,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Map of valid markers.
@ -58,7 +58,7 @@ function strongMarker(ast, file, preferred, done) {
visit(ast, 'strong', function (node) {
var marker = file.toString().charAt(position.start(node).offset);
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}

View File

@ -34,8 +34,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -83,7 +83,7 @@ function tableCellPadding(ast, file, preferred, done) {
var type;
var warning;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}
@ -160,7 +160,7 @@ function tableCellPadding(ast, file, preferred, done) {
warning = 'Cell should be ' + type + ', isnt';
positions.forEach(function (diff, index) {
if (diff !== style && diff !== undefined) {
if (diff !== style && diff !== undefined && diff !== null) {
file.warn(warning, locations[index]);
}
});

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -47,7 +47,7 @@ function tablePipeAlignment(ast, file, preferred, done) {
var offset;
var line;
if (position.isGenerated(node)) {
if (position.generated(node)) {
return;
}
@ -58,7 +58,7 @@ function tablePipeAlignment(ast, file, preferred, done) {
function check(initial, final, index) {
var pos = initial + contents.slice(initial, final).indexOf('|') - offset + 1;
if (indices[index] === undefined) {
if (indices[index] === undefined || indices[index] === null) {
indices[index] = pos;
} else if (pos !== indices[index]) {
file.warn('Misaligned table fence', {

View File

@ -22,8 +22,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -51,7 +51,7 @@ function tablePipes(ast, file, preferred, done) {
var initial = contents.slice(start(row).offset, start(head).offset);
var final = contents.slice(end(tail).offset, end(row).offset);
if (position.isGenerated(row)) {
if (position.generated(row)) {
return;
}

View File

@ -36,8 +36,8 @@
* Dependencies.
*/
var visit = require('../utilities/visit');
var position = require('../utilities/position');
var visit = require('mdast-util-visit');
var position = require('mdast-util-position');
/*
* Methods.
@ -91,7 +91,7 @@ function unorderedListMarkerStyle(ast, file, preferred, done) {
var final = start(head).offset;
var marker;
if (position.isGenerated(item)) {
if (position.generated(item)) {
return;
}

View File

@ -1,44 +0,0 @@
/**
* @author Titus Wormer
* @copyright 2015 Titus Wormer. All rights reserved.
* @module Sort
* @fileoverview mdast plug-in used internally by
* mdast-lint to sort warnings.
* @todo Externalise into its own repository.
*/
'use strict';
/**
* Sort all `file`s messages by line/column. Note that
* this works as a plugin, and will also sort warnings
* added by other plug-ins before `mdast-lint` was added.
*
* @param {Node} ast - Root node.
* @param {File} file - Virtual file.
*/
function transformer(ast, file) {
file.messages.sort(function (a, b) {
/* istanbul ignore if - Useful when externalised */
if (a.line === undefined || b.line === undefined) {
return -1;
}
return a.line === b.line ? a.column - b.column : a.line - b.line;
});
}
/**
* Return `transformer`.
*
* @return {Function} - See `transformer`.
*/
function attacher() {
return transformer;
}
/*
* Expose.
*/
module.exports = attacher;

View File

@ -1,79 +0,0 @@
/**
* @author Titus Wormer
* @copyright 2015 Titus Wormer. All rights reserved.
* @module headingStyle
* @fileoverview Utility to check which style a heading
* node is in.
*/
'use strict';
/*
* Dependencies.
*/
var end = require('./position').end;
/**
* Get the probable style of an atx-heading, depending on
* preferred style.
*
* @example
* consolidate(1, 'setext') // 'atx'
* consolidate(1, 'atx') // 'atx'
* consolidate(3, 'setext') // 'setext'
* consolidate(3, 'atx') // 'atx'
*
* @param {number} depth
* @param {string?} relative
* @return {string?} - Type.
*/
function consolidate(depth, relative) {
return depth < 3 ? 'atx' :
relative === 'atx' || relative === 'setext' ? relative : null;
}
/**
* Check the style of a heading.
*
* @param {Node} node
* @param {string?} relative - heading type which we'd wish
* this to be.
* @return {string?} - Type, either `'atx-closed'`,
* `'atx'`, or `'setext'`.
*/
function style(node, relative) {
var last = node.children[node.children.length - 1];
var depth = node.depth;
/*
* This can only occur for atx and `'atx-closed'`
* headings. This might incorrectly match `'atx'`
* headings with lots of trailing white space as an
* `'atx-closed'` heading.
*/
if (!last) {
if (end(node).column < depth * 2) {
return consolidate(depth, relative);
}
return 'atx-closed';
}
if (end(last).line + 1 === end(node).line) {
return 'setext';
}
if (end(last).column + depth < end(node).column) {
return 'atx-closed';
}
return consolidate(depth, relative);
}
/*
* Expose.
*/
module.exports = style;

View File

@ -1,65 +0,0 @@
/**
* @author Titus Wormer
* @copyright 2015 Titus Wormer. All rights reserved.
* @module Position
* @fileoverview Utility to get either the starting or the
* ending position of a node, and if its generated
* or not.
*/
'use strict';
/**
* Factory to get a position at `type`.
*
* @param {string} type - Either `'start'` or `'end'`.
* @return {function(Node): Object}
*/
function positionFactory(type) {
/**
* Fet a position in `node` at a bound `type`.
*
* @param {Node} node
* @return {Object}
*/
return function (node) {
return (node && node.position && node.position[type]) || {};
};
}
/*
* Getters.
*/
var start = positionFactory('start');
var end = positionFactory('end');
/**
* Detect if a node is generated.
*
* @param {Node} node - Node to test.
* @return {boolean} - Whether or not `node` is generated.
*/
function isGenerated(node) {
var initial = start(node);
var final = end(node);
return initial.line === undefined || initial.column === undefined ||
final.line === undefined || final.column === undefined;
}
/*
* Exports.
*/
var position = {
'start': start,
'end': end,
'isGenerated': isGenerated
};
/*
* Expose.
*/
module.exports = position;

View File

@ -1,42 +0,0 @@
/**
* @author Titus Wormer
* @copyright 2015 Titus Wormer. All rights reserved.
* @module ToString
* @fileoverview Utility to get the plain text content
* of a node.
*/
'use strict';
/**
* Get the value of `node`. Checks, `value`,
* `alt`, and `title`, in that order.
*
* @param {Node} node - Node to get the internal value of.
* @return {string} - Textual representation.
*/
function valueOf(node) {
return node &&
(node.value ? node.value :
(node.alt ? node.alt : node.title)) || '';
}
/**
* Returns the text content of a node. If the node itself
* does not expose plain-text fields, `toString` will
* recursivly try its children.
*
* @param {Node} node - Node to transform to a string.
* @return {string} - Textual representation.
*/
function toString(node) {
return valueOf(node) ||
(node.children && node.children.map(toString).join('')) ||
'';
}
/*
* Expose.
*/
module.exports = toString;

View File

@ -1,115 +0,0 @@
/**
* @author Titus Wormer
* @copyright 2015 Titus Wormer. All rights reserved.
* @module Visit
* @fileoverview Utility to recursivly walk over mdast
* nodes.
* @todo Externalise into its own repository.
*/
'use strict';
/**
* Walk forwards.
*
* @param {Array.<*>} values - Things to iterate over,
* forwards.
* @param {function(*, number): boolean} callback - Function
* to invoke.
* @return {boolean} - False if iteration stopped.
*/
function forwards(values, callback) {
var index = -1;
var length = values.length;
while (++index < length) {
if (callback(values[index], index) === false) {
return false;
}
}
return true;
}
/**
* Walk backwards.
*
* @param {Array.<*>} values - Things to iterate over,
* backwards.
* @param {function(*, number): boolean} callback - Function
* to invoke.
* @return {boolean} - False if iteration stopped.
*/
function backwards(values, callback) {
var index = values.length;
var length = -1;
while (--index > length) {
/* istanbul ignore if - Not used yet... */
if (callback(values[index], index) === false) {
return false;
}
}
return true;
}
/**
* Visit.
*
* @param {Node} tree - Root node
* @param {string} [type] - Optional node type.
* @param {function(node): boolean?} callback - Invoked
* with each found node. Can return `false` to stop
* iteration.
* @param {boolean} [reverse] - By default, `visit` will
* walk forwards, when `reverse` is `true`, `visit`
* walks backwards.
*/
function visit(tree, type, callback, reverse) {
var iterate;
var one;
var all;
if (typeof type === 'function') {
reverse = callback;
callback = type;
type = null;
}
iterate = reverse ? backwards : forwards;
/**
* Visit `children` in `parent`.
*/
all = function (children, parent) {
return iterate(children, function (child, index) {
return one(child, index, parent);
});
};
/**
* Visit a single node.
*/
one = function (node, position, parent) {
var result;
if (!type || node.type === type) {
result = callback(node, position || 0, parent || null);
}
if (node.children && result !== false) {
return all(node.children, node);
}
return result;
};
one(tree);
}
/*
* Expose.
*/
module.exports = visit;

File diff suppressed because it is too large Load Diff

2
mdast-lint.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -18,7 +18,12 @@
"email": "tituswormer@gmail.com"
},
"dependencies": {
"mdast-message-sort": "^0.1.0",
"mdast-range": "^0.4.0",
"mdast-util-heading-style": "^0.1.0",
"mdast-util-position": "^0.2.0",
"mdast-util-to-string": "^0.1.0",
"mdast-util-visit": "^0.1.1",
"mdast-zone": "^0.2.1"
},
"files": [

View File

@ -13,7 +13,7 @@
* Dpendencies.
*/
var visit = require('../lib/utilities/visit');
var visit = require('mdast-util-visit');
/**
* Delete the `position` key for each node.

View File

@ -274,8 +274,6 @@ describe('Gaps', function () {
done(err);
});
// assertFile('gaps-toc-final.md', []);
});
it('should supports gaps at the end of a document', function (done) {