Skip to content

Commit

Permalink
feat: new rule, trailing-semi
Browse files Browse the repository at this point in the history
  • Loading branch information
revelt committed Feb 15, 2021
1 parent 76cd119 commit a47bdfb
Show file tree
Hide file tree
Showing 10 changed files with 446 additions and 48 deletions.
2 changes: 1 addition & 1 deletion packages/emlint/coverage/coverage-summary.json
@@ -1 +1 @@
{"total":{"lines":{"total":2459,"covered":2402,"skipped":0,"pct":97.68},"statements":{"total":2741,"covered":2684,"skipped":0,"pct":97.92},"functions":{"total":993,"covered":987,"skipped":0,"pct":99.4},"branches":{"total":2031,"covered":1922,"skipped":0,"pct":94.63}}}
{"total":{"lines":{"total":2472,"covered":2415,"skipped":0,"pct":97.69},"statements":{"total":2756,"covered":2699,"skipped":0,"pct":97.93},"functions":{"total":995,"covered":989,"skipped":0,"pct":99.4},"branches":{"total":2048,"covered":1938,"skipped":0,"pct":94.63}}}
78 changes: 75 additions & 3 deletions packages/emlint/dist/emlint.cjs.js
Expand Up @@ -10473,9 +10473,81 @@ function tdSiblingPadding(context) {
};
}

var trailingSemi = function trailingSemi(_context, mode) {
return {
tag: function tag(node) {
var trailingSemi = function trailingSemi(context, mode) {
return {
rule: function rule(node) { // incoming "rule"-type node will be something like:
// {
// type: "rule",
// start: 7,
// end: 20,
// value: ".a{color:red}",
// left: 6,
// nested: false,
// openingCurlyAt: 9,
// closingCurlyAt: 19,
// selectorsStart: 7,
// selectorsEnd: 9,
// selectors: [
// {
// value: ".a",
// selectorStarts: 7,
// selectorEnds: 9,
// },
// ],
// properties: [
// {
// start: 10,
// end: 19,
// value: "red",
// property: "color",
// propertyStarts: 10,
// propertyEnds: 15,
// colon: 15,
// valueStarts: 16,
// valueEnds: 19,
// semi: null,
// },
// ],
// };

var properties = []; // there can be text nodes within properties array!
// innocent whitespace is still a text node!!!!

if (Array.isArray(node.properties) && node.properties.length && node.properties.filter(function (property) {
return property.property;
}).length) {
properties = node.properties.filter(function (property) {
return property.property;
});
}

if (mode !== "never" && properties && properties[~-properties.length].semi === null && properties[~-properties.length].valueEnds) {
var idxFrom = properties[~-properties.length].start;
var idxTo = properties[~-properties.length].end;
var positionToInsert = properties[~-properties.length].valueEnds;
context.report({
ruleId: "trailing-semi",
idxFrom: idxFrom,
idxTo: idxTo,
message: "Add a semicolon.",
fix: {
ranges: [[positionToInsert, positionToInsert, ";"]]
}
});
} else if (mode === "never" && properties && properties[~-properties.length].semi !== null && properties[~-properties.length].valueEnds) {
var _idxFrom = properties[~-properties.length].start;
var _idxTo = properties[~-properties.length].end;
var positionToRemove = properties[~-properties.length].semi;
context.report({
ruleId: "trailing-semi",
idxFrom: _idxFrom,
idxTo: _idxTo,
message: "Remove the semicolon.",
fix: {
ranges: [[positionToRemove, positionToRemove + 1]]
}
});
}
}
};
};
Expand Down
78 changes: 75 additions & 3 deletions packages/emlint/dist/emlint.dev.umd.js
Expand Up @@ -43943,9 +43943,81 @@ function tdSiblingPadding(context) {
};
}

var trailingSemi = function trailingSemi(_context, mode) {
return {
tag: function tag(node) {
var trailingSemi = function trailingSemi(context, mode) {
return {
rule: function rule(node) { // incoming "rule"-type node will be something like:
// {
// type: "rule",
// start: 7,
// end: 20,
// value: ".a{color:red}",
// left: 6,
// nested: false,
// openingCurlyAt: 9,
// closingCurlyAt: 19,
// selectorsStart: 7,
// selectorsEnd: 9,
// selectors: [
// {
// value: ".a",
// selectorStarts: 7,
// selectorEnds: 9,
// },
// ],
// properties: [
// {
// start: 10,
// end: 19,
// value: "red",
// property: "color",
// propertyStarts: 10,
// propertyEnds: 15,
// colon: 15,
// valueStarts: 16,
// valueEnds: 19,
// semi: null,
// },
// ],
// };

var properties = []; // there can be text nodes within properties array!
// innocent whitespace is still a text node!!!!

if (Array.isArray(node.properties) && node.properties.length && node.properties.filter(function (property) {
return property.property;
}).length) {
properties = node.properties.filter(function (property) {
return property.property;
});
}

if (mode !== "never" && properties && properties[~-properties.length].semi === null && properties[~-properties.length].valueEnds) {
var idxFrom = properties[~-properties.length].start;
var idxTo = properties[~-properties.length].end;
var positionToInsert = properties[~-properties.length].valueEnds;
context.report({
ruleId: "trailing-semi",
idxFrom: idxFrom,
idxTo: idxTo,
message: "Add a semicolon.",
fix: {
ranges: [[positionToInsert, positionToInsert, ";"]]
}
});
} else if (mode === "never" && properties && properties[~-properties.length].semi !== null && properties[~-properties.length].valueEnds) {
var _idxFrom = properties[~-properties.length].start;
var _idxTo = properties[~-properties.length].end;
var positionToRemove = properties[~-properties.length].semi;
context.report({
ruleId: "trailing-semi",
idxFrom: _idxFrom,
idxTo: _idxTo,
message: "Remove the semicolon.",
fix: {
ranges: [[positionToRemove, positionToRemove + 1]]
}
});
}
}
};
};
Expand Down
74 changes: 71 additions & 3 deletions packages/emlint/dist/emlint.esm.js
Expand Up @@ -10827,9 +10827,77 @@ function tdSiblingPadding(context) {
};
}

const trailingSemi = (_context, mode) => {
return {
tag(node) {
const trailingSemi = (context, mode) => {
return {
rule(node) { // incoming "rule"-type node will be something like:
// {
// type: "rule",
// start: 7,
// end: 20,
// value: ".a{color:red}",
// left: 6,
// nested: false,
// openingCurlyAt: 9,
// closingCurlyAt: 19,
// selectorsStart: 7,
// selectorsEnd: 9,
// selectors: [
// {
// value: ".a",
// selectorStarts: 7,
// selectorEnds: 9,
// },
// ],
// properties: [
// {
// start: 10,
// end: 19,
// value: "red",
// property: "color",
// propertyStarts: 10,
// propertyEnds: 15,
// colon: 15,
// valueStarts: 16,
// valueEnds: 19,
// semi: null,
// },
// ],
// };

let properties = []; // there can be text nodes within properties array!
// innocent whitespace is still a text node!!!!

if (Array.isArray(node.properties) && node.properties.length && node.properties.filter(property => property.property).length) {
properties = node.properties.filter(property => property.property);
}

if (mode !== "never" && properties && properties[~-properties.length].semi === null && properties[~-properties.length].valueEnds) {
const idxFrom = properties[~-properties.length].start;
const idxTo = properties[~-properties.length].end;
const positionToInsert = properties[~-properties.length].valueEnds;
context.report({
ruleId: "trailing-semi",
idxFrom,
idxTo,
message: `Add a semicolon.`,
fix: {
ranges: [[positionToInsert, positionToInsert, ";"]]
}
});
} else if (mode === "never" && properties && properties[~-properties.length].semi !== null && properties[~-properties.length].valueEnds) {
const idxFrom = properties[~-properties.length].start;
const idxTo = properties[~-properties.length].end;
const positionToRemove = properties[~-properties.length].semi;
context.report({
ruleId: "trailing-semi",
idxFrom,
idxTo,
message: `Remove the semicolon.`,
fix: {
ranges: [[positionToRemove, positionToRemove + 1]]
}
});
}
}

};
Expand Down
2 changes: 1 addition & 1 deletion packages/emlint/dist/emlint.mjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/emlint/dist/emlint.umd.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/emlint/package.json
Expand Up @@ -174,4 +174,4 @@
"tslib": "^2.1.0",
"typescript": "^4.1.5"
}
}
}
5 changes: 3 additions & 2 deletions packages/emlint/perf/historical.json
Expand Up @@ -37,6 +37,7 @@
"3.0.9": 5763.341294646935,
"4.0.2": 5664.513723717245,
"4.1.1": 6136.767298102715,
"lastPublished": 6136.767298102715,
"lastRan": 6136.767298102715
"4.1.2": 5603.889572439078,
"lastPublished": 5603.889572439078,
"lastRan": 5603.889572439078
}

0 comments on commit a47bdfb

Please sign in to comment.