visit(ast, function (node) {
        var children = node.children;
        var head = children && children[0];
        var tail = children && children[children.length - 1];

        if (position.generated(node)) {
            return;
        }

        if (head && !position.generated(head)) {
            /*
             * Compare parent and first child.
             */

            compare(position.start(node), position.start(head), 0);

            /*
             * Compare between each child.
             */

            children.forEach(function (child, index) {
                var prev = children[index - 1];
                var max = MAX;

                if (
                    !prev ||
                    position.generated(prev) ||
                    position.generated(child)
                ) {
                    return;
                }

                if (
                    (
                        prev.type === 'list' &&
                        child.type === 'list'
                    ) ||
                    (
                        child.type === 'code' &&
                        prev.type === 'list' &&
                        !child.lang
                    )
                ) {
                    max++;
                }

                compare(position.end(prev), position.start(child), max);
            });

            /*
             * Compare parent and last child.
             */

            if (tail !== head && !position.generated(tail)) {
                compare(position.end(node), position.end(tail), 1);
            }
        }
    });
            children.forEach(function (child, index) {
                var prev = children[index - 1];
                var max = MAX;

                if (
                    !prev ||
                    position.generated(prev) ||
                    position.generated(child)
                ) {
                    return;
                }

                if (
                    (
                        prev.type === 'list' &&
                        child.type === 'list'
                    ) ||
                    (
                        child.type === 'code' &&
                        prev.type === 'list' &&
                        !child.lang
                    )
                ) {
                    max++;
                }

                compare(position.end(prev), position.start(child), max);
            });
Пример #3
0
    visit(ast, 'emphasis', function (node) {
        var marker = file.toString().charAt(position.start(node).offset);

        if (position.generated(node)) {
            return;
        }

        if (preferred) {
            if (marker !== preferred) {
                file.warn('Emphasis should use `' + preferred + '` as a marker', node);
            }
        } else {
            preferred = marker;
        }
    });
Пример #4
0
    visit(ast, 'break', function (node) {
        var start = position.start(node).offset;
        var end = position.end(node).offset;
        var value;

        if (position.generated(node)) {
            return;
        }

        value = contents.slice(start, end).split('\n', 1)[0];

        if (value.length > 2) {
            file.warn('Use two spaces for hard line breaks', node);
        }
    });
Пример #5
0
    visit(ast, function (node, index, parent) {
        var next = parent && parent.children[index + 1];

        if (position.generated(node)) {
            return;
        }

        if (
            next &&
            isApplicable(node) &&
            isApplicable(next) &&
            position.start(next).line === position.end(node).line + 1
        ) {
            file.warn('Missing blank line before block node', next);
        }
    });
    visit(ast, 'heading', function (node) {
        var pos;

        if (position.generated(node)) {
            return;
        }

        if (node.depth === style) {
            if (topLevelheading) {
                pos = position.start(node);

                file.warn('Don’t use multiple top level headings (' + pos.line + ':' + pos.column + ')', node);
            }

            topLevelheading = node;
        }
    });
    /**
     * Check `node`.
     *
     * @param {Node} node - Node.
     */
    function validate(node) {
        var duplicate = map[node.identifier];
        var pos;

        if (position.generated(node)) {
            return;
        }

        if (duplicate && duplicate.type) {
            pos = position.start(duplicate);

            file.warn(
                'Do not use definitions with the same identifier (' +
                pos.line + ':' + pos.column + ')',
                node
            );
        }

        map[node.identifier] = node;
    }