1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- var resolveKeyword = require('../../../utils/names.js').keyword;
- var walkRules = require('../../../utils/walk.js').rules;
- var translate = require('../../../utils/translate.js');
- var createDeclarationIndexer = require('./createDeclarationIndexer.js');
- var processSelector = require('./processSelector.js');
- function walk(node, markDeclaration, usageData) {
- switch (node.type) {
- case 'Ruleset':
- node.block.declarations.each(markDeclaration);
- processSelector(node, usageData);
- break;
- case 'Atrule':
- if (node.expression) {
- node.expression.id = translate(node.expression);
- }
- // compare keyframe selectors by its values
- // NOTE: still no clarification about problems with keyframes selector grouping (issue #197)
- if (resolveKeyword(node.name).name === 'keyframes') {
- node.block.avoidRulesMerge = true; /* probably we don't need to prevent those merges for @keyframes
- TODO: need to be checked */
- node.block.rules.each(function(ruleset) {
- ruleset.selector.selectors.each(function(simpleselector) {
- simpleselector.compareMarker = simpleselector.id;
- });
- });
- }
- break;
- }
- };
- module.exports = function prepare(ast, usageData) {
- var markDeclaration = createDeclarationIndexer();
- walkRules(ast, function(node) {
- walk(node, markDeclaration, usageData);
- });
- return {
- declaration: markDeclaration
- };
- };
|