Sha256: b64157a1248d979c8173229ecee93bb3d22f2fb96c6e7e7bd244819a0d5f601d

Contents?: true

Size: 1.59 KB

Versions: 18

Compression:

Stored size: 1.59 KB

Contents

var List = require('../utils/list');

function getFirstMatchNode(matchNode) {
    if ('node' in matchNode) {
        return matchNode.node;
    }

    return getFirstMatchNode(matchNode.match[0]);
}

function getLastMatchNode(matchNode) {
    if ('node' in matchNode) {
        return matchNode.node;
    }

    return getLastMatchNode(matchNode.match[matchNode.match.length - 1]);
}

function matchFragments(lexer, ast, match, type, name) {
    function findFragments(matchNode) {
        if (matchNode.syntax !== null &&
            matchNode.syntax.type === type &&
            matchNode.syntax.name === name) {
            var start = getFirstMatchNode(matchNode);
            var end = getLastMatchNode(matchNode);

            lexer.syntax.walk(ast, function(node, item, list) {
                if (node === start) {
                    var nodes = new List();

                    do {
                        nodes.appendData(item.data);

                        if (item.data === end) {
                            break;
                        }

                        item = item.next;
                    } while (item !== null);

                    fragments.push({
                        parent: list,
                        nodes: nodes
                    });
                }
            });
        }

        if (Array.isArray(matchNode.match)) {
            matchNode.match.forEach(findFragments);
        }
    }

    var fragments = [];

    if (match.matched !== null) {
        findFragments(match.matched);
    }

    return fragments;
}

module.exports = {
    matchFragments: matchFragments
};

Version data entries

18 entries across 18 versions & 4 rubygems

Version Path
disco_app-0.18.0 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.18.2 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.16.1 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.15.2 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.18.4 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.18.1 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.14.0 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
jester-data-8.0.0 node_modules/csso/node_modules/css-tree/lib/lexer/search.js
ezii-os-5.2.1 node_modules/csso/node_modules/css-tree/lib/lexer/search.js
ezii-os-2.0.1 node_modules/csso/node_modules/css-tree/lib/lexer/search.js
ezii-os-1.1.0 node_modules/csso/node_modules/css-tree/lib/lexer/search.js
ezii-os-1.0.0 node_modules/csso/node_modules/css-tree/lib/lexer/search.js
ezii-os-0.0.0.1.0 node_modules/csso/node_modules/css-tree/lib/lexer/search.js
ezii-os-0.0.0.0.1 node_modules/csso/node_modules/css-tree/lib/lexer/search.js
locomotivecms-4.0.0.alpha1 app/javascript/node_modules/csso/node_modules/css-tree/lib/lexer/search.js
locomotivecms-3.4.0 app/javascript/node_modules/csso/node_modules/css-tree/lib/lexer/search.js