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
- };
- };
|