mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-21 03:25:12 +08:00
# Conflicts: # jsowell-ui/.env.development # jsowell-ui/.env.staging # jsowell-ui/bin/build-sit.bat # jsowell-ui/bin/build.bat # jsowell-ui/src/api/adapayMember/adapayMember.js # jsowell-ui/src/api/pile/merchant.js # jsowell-ui/src/router/index.js # jsowell-ui/src/views/financial/financeDetail.vue # jsowell-ui/src/views/financial/merchant.vue # jsowell-ui/src/views/homeIndex/homeIndex.vue # jsowell-ui/src/views/login.vue # jsowell-ui/src/views/pile/basic/detail.vue # jsowell-ui/src/views/pile/station/components/SiteInfo.vue # jsowell-ui/src/views/pile/station/detail.vue # jsowell-ui/src/views/pile/station/orderReport.vue
48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
var walk = require('css-tree').walk;
|
|
var utils = require('./utils');
|
|
|
|
function processRule(node, item, list) {
|
|
var selectors = node.prelude.children;
|
|
var declarations = node.block.children;
|
|
|
|
list.prevUntil(item.prev, function(prev) {
|
|
// skip non-ruleset node if safe
|
|
if (prev.type !== 'Rule') {
|
|
return utils.unsafeToSkipNode.call(selectors, prev);
|
|
}
|
|
|
|
var prevSelectors = prev.prelude.children;
|
|
var prevDeclarations = prev.block.children;
|
|
|
|
// try to join rulesets with equal pseudo signature
|
|
if (node.pseudoSignature === prev.pseudoSignature) {
|
|
// try to join by selectors
|
|
if (utils.isEqualSelectors(prevSelectors, selectors)) {
|
|
prevDeclarations.appendList(declarations);
|
|
list.remove(item);
|
|
return true;
|
|
}
|
|
|
|
// try to join by declarations
|
|
if (utils.isEqualDeclarations(declarations, prevDeclarations)) {
|
|
utils.addSelectors(prevSelectors, selectors);
|
|
list.remove(item);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// go to prev ruleset if has no selector similarities
|
|
return utils.hasSimilarSelectors(selectors, prevSelectors);
|
|
});
|
|
}
|
|
|
|
// NOTE: direction should be left to right, since rulesets merge to left
|
|
// ruleset. When direction right to left unmerged rulesets may prevent lookup
|
|
// TODO: remove initial merge
|
|
module.exports = function initialMergeRule(ast) {
|
|
walk(ast, {
|
|
visit: 'Rule',
|
|
enter: processRule
|
|
});
|
|
};
|