| 123456789101112131415161718192021222324252627282930313233343536373839 |
- const createExpectedOrder = require('../createExpectedOrder');
- const isRuleWithNodes = require('../isRuleWithNodes');
- const processLastComments = require('../processLastComments');
- const processMostNodes = require('../processMostNodes');
- const getContainingNode = require('../getContainingNode');
- const sorting = require('../sorting');
- module.exports = function(css, opts) {
- const expectedOrder = createExpectedOrder(opts.order);
- css.walk(function(input) {
- const node = getContainingNode(input);
- if (isRuleWithNodes(node)) {
- // Nodes for sorting
- let processed = [];
- // Add indexes to nodes
- node.each(function(childNode, index) {
- processed = processMostNodes(childNode, index, expectedOrder, processed);
- });
- // Add last comments in the rule. Need this because last comments are not belonging to anything
- node.each(function(childNode, index) {
- processed = processLastComments(childNode, index, processed);
- });
- // Sort declarations saved for sorting
- processed.sort(sorting.sortByIndexes);
- // Enforce semicolon for the last node
- node.raws.semicolon = true;
- // Replace rule content with sorted one
- node.removeAll();
- node.append(processed);
- }
- });
- };
|