epiphany/node_modules/stylelint-order/rules/checkAlphabeticalOrder.js

36 lines
1,015 B
JavaScript
Raw Normal View History

2023-12-09 22:48:07 -08:00
const shorthandData = require('./shorthandData');
const { vendor } = require('../utils');
function isShorthand(a, b) {
const longhands = shorthandData[a] || [];
return longhands.includes(b);
}
module.exports = function checkAlphabeticalOrder(firstPropData, secondPropData) {
// OK if the first is shorthand for the second:
if (isShorthand(firstPropData.unprefixedName, secondPropData.unprefixedName)) {
return true;
}
// Not OK if the second is shorthand for the first:
if (isShorthand(secondPropData.unprefixedName, firstPropData.unprefixedName)) {
return false;
}
// If unprefixed prop names are the same, compare the prefixed versions
if (firstPropData.unprefixedName === secondPropData.unprefixedName) {
// If first property has no prefix and second property has prefix
if (
!vendor.prefix(firstPropData.name).length &&
vendor.prefix(secondPropData.name).length
) {
return false;
}
return true;
}
return firstPropData.unprefixedName < secondPropData.unprefixedName;
};