Skip to content

Commit

Permalink
refactored group name logic as suggested in #73
Browse files Browse the repository at this point in the history
  • Loading branch information
mbrowne committed Nov 14, 2018
1 parent 6ba7e43 commit f8a8307
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 24 deletions.
15 changes: 1 addition & 14 deletions rules/properties-order/checkNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,6 @@ module.exports = function checkNode(node, sharedInfo) {
const allPropData = allNodesData.filter(item => item.name);
let shouldFixOrder = false;

// for grouped properties, create a map to their group names (used for error messages)
const groupNamesByProperty = {};

for (const group of sharedInfo.expectation.filter(e => typeof e === 'object')) {
for (const prop of group.properties) {
if (group.name) {
groupNamesByProperty[prop] = group.name;
}
}
}

// First, check order
allPropData.forEach(function checkEveryPropForOrder(propData, index) {
// return early if we know there is a violation and auto fix should be applied
Expand Down Expand Up @@ -58,13 +47,11 @@ module.exports = function checkNode(node, sharedInfo) {
if (sharedInfo.isFixEnabled) {
shouldFixOrder = true;
} else {
const groupName = groupNamesByProperty[checkedOrder.secondNode.name];

stylelint.utils.report({
message: sharedInfo.messages.expected(
checkedOrder.secondNode.name,
checkedOrder.firstNode.name,
groupName
checkedOrder.secondNode.orderData.groupName
),
node: checkedOrder.secondNode.node,
result: sharedInfo.result,
Expand Down
14 changes: 7 additions & 7 deletions rules/properties-order/createExpectedOrder.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ module.exports = function createExpectedOrder(input) {
let expectedPosition = 0;
let separatedGroup = 1;

appendGroup(input);
appendGroup({ properties: input });

function appendGroup(items) {
items.forEach(item => appendItem(item, false));
function appendGroup(group) {
group.properties.forEach(item => appendItem(item, false, group));
}

function appendItem(item, inFlexibleGroup) {
function appendItem(item, inFlexibleGroup, group) {
if (_.isString(item)) {
// In flexible groups, the expectedPosition does not ascend
// to make that flexibility work;
Expand All @@ -20,7 +20,7 @@ module.exports = function createExpectedOrder(input) {
expectedPosition += 1;
}

order[item] = { separatedGroup, expectedPosition };
order[item] = { separatedGroup, expectedPosition, groupName: group.groupName };

return;
}
Expand All @@ -34,10 +34,10 @@ module.exports = function createExpectedOrder(input) {
expectedPosition += 1;

item.properties.forEach(property => {
appendItem(property, true);
appendItem(property, true, item);
});
} else {
appendGroup(item.properties);
appendGroup(item);
}
}

Expand Down
4 changes: 1 addition & 3 deletions rules/properties-order/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ const ruleName = utils.namespace('properties-order');

const messages = stylelint.utils.ruleMessages(ruleName, {
expected: (first, second, groupName) => `
Expected "${first}"${
groupName ? ` to be grouped with other "${groupName}" properties and` : ''
} to come before "${second}"`,
Expected "${first}" to come before "${second}"${groupName ? ` in group "${groupName}"` : ''}`,
expectedEmptyLineBefore: property => `Expected an empty line before property "${property}"`,
rejectedEmptyLineBefore: property => `Unexpected an empty line before property "${property}"`,
});
Expand Down

0 comments on commit f8a8307

Please sign in to comment.