1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- const utils = require('../../utils');
- const calcAtRulePatternPriority = require('./calcAtRulePatternPriority');
- const calcRulePatternPriority = require('./calcRulePatternPriority');
- const getDescription = require('./getDescription');
- module.exports = function getOrderData(orderInfo, node) {
- let nodeType;
- if (utils.isAtVariable(node)) {
- nodeType = 'at-variables';
- } else if (utils.isLessMixin(node)) {
- nodeType = 'less-mixins';
- } else if (node.type === 'decl') {
- if (utils.isCustomProperty(node.prop)) {
- nodeType = 'custom-properties';
- } else if (utils.isDollarVariable(node.prop)) {
- nodeType = 'dollar-variables';
- } else if (utils.isStandardSyntaxProperty(node.prop)) {
- nodeType = 'declarations';
- }
- } else if (node.type === 'rule') {
- nodeType = {
- type: 'rule',
- selector: node.selector,
- };
- const rules = orderInfo.rule;
- // Looking for most specified pattern, because it can match many patterns
- if (rules && rules.length) {
- let prioritizedPattern;
- let max = 0;
- rules.forEach((pattern) => {
- const priority = calcRulePatternPriority(pattern, nodeType);
- if (priority > max) {
- max = priority;
- prioritizedPattern = pattern;
- }
- });
- if (max) {
- return prioritizedPattern;
- }
- }
- } else if (node.type === 'atrule') {
- nodeType = {
- type: 'at-rule',
- name: node.name,
- hasBlock: false,
- };
- if (node.nodes && node.nodes.length) {
- nodeType.hasBlock = true;
- }
- if (node.params && node.params.length) {
- nodeType.parameter = node.params;
- }
- const atRules = orderInfo['at-rule'];
- // Looking for most specified pattern, because it can match many patterns
- if (atRules && atRules.length) {
- let prioritizedPattern;
- let max = 0;
- atRules.forEach((pattern) => {
- const priority = calcAtRulePatternPriority(pattern, nodeType);
- if (priority > max) {
- max = priority;
- prioritizedPattern = pattern;
- }
- });
- if (max) {
- return prioritizedPattern;
- }
- }
- }
- if (orderInfo[nodeType]) {
- return orderInfo[nodeType];
- }
- // Return only description if there no patterns for that node
- return {
- description: getDescription(nodeType),
- };
- };
|