| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | var resolveKeyword = require('css-tree').keyword;var walk = require('css-tree').walk;var generate = require('css-tree').generate;var createDeclarationIndexer = require('./createDeclarationIndexer');var processSelector = require('./processSelector');module.exports = function prepare(ast, options) {    var markDeclaration = createDeclarationIndexer();    walk(ast, {        visit: 'Rule',        enter: function processRule(node) {            node.block.children.each(markDeclaration);            processSelector(node, options.usage);        }    });    walk(ast, {        visit: 'Atrule',        enter: function(node) {            if (node.prelude) {                node.prelude.id = null; // pre-init property to avoid multiple hidden class for generate                node.prelude.id = generate(node.prelude);            }            // compare keyframe selectors by its values            // NOTE: still no clarification about problems with keyframes selector grouping (issue #197)            if (resolveKeyword(node.name).basename === 'keyframes') {                node.block.avoidRulesMerge = true;  /* probably we don't need to prevent those merges for @keyframes                                                       TODO: need to be checked */                node.block.children.each(function(rule) {                    rule.prelude.children.each(function(simpleselector) {                        simpleselector.compareMarker = simpleselector.id;                    });                });            }        }    });    return {        declaration: markDeclaration    };};
 |