Skip to content

Commit 79a7e65

Browse files
fix: francoismassart#216 classRegex ignored in vuejs (francoismassart#217)
* fix: francoismassart#216 * test: issue francoismassart#216
1 parent 893c44d commit 79a7e65

11 files changed

+39
-17
lines changed

lib/rules/classnames-order.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ module.exports = {
244244
*/
245245
VAttribute: function (node) {
246246
switch (true) {
247-
case !astUtil.isValidVueAttribute(node):
247+
case !astUtil.isValidVueAttribute(node, classRegex):
248248
return;
249249
case astUtil.isVLiteralValue(node):
250250
sortNodeArgumentValue(node, null);

lib/rules/enforces-negative-arbitrary-values.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ module.exports = {
188188
*/
189189
VAttribute: function (node) {
190190
switch (true) {
191-
case !astUtil.isValidVueAttribute(node):
191+
case !astUtil.isValidVueAttribute(node, classRegex):
192192
return;
193193
case astUtil.isVLiteralValue(node):
194194
parseForNegativeArbitraryClassNames(node);

lib/rules/enforces-shorthand.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ module.exports = {
421421
*/
422422
VAttribute: function (node) {
423423
switch (true) {
424-
case !astUtil.isValidVueAttribute(node):
424+
case !astUtil.isValidVueAttribute(node, classRegex):
425425
return;
426426
case astUtil.isVLiteralValue(node):
427427
parseForShorthandCandidates(node);

lib/rules/migration-from-tailwind-2.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ module.exports = {
299299
*/
300300
VAttribute: function (node) {
301301
switch (true) {
302-
case !astUtil.isValidVueAttribute(node):
302+
case !astUtil.isValidVueAttribute(node, classRegex):
303303
return;
304304
case astUtil.isVLiteralValue(node):
305305
parseForObsoleteClassNames(node);

lib/rules/no-arbitrary-value.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ module.exports = {
188188
*/
189189
VAttribute: function (node) {
190190
switch (true) {
191-
case !astUtil.isValidVueAttribute(node):
191+
case !astUtil.isValidVueAttribute(node, classRegex):
192192
return;
193193
case astUtil.isVLiteralValue(node):
194194
parseForArbitraryValues(node, null);

lib/rules/no-contradicting-classname.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ module.exports = {
216216
*/
217217
VAttribute: function (node) {
218218
switch (true) {
219-
case !astUtil.isValidVueAttribute(node):
219+
case !astUtil.isValidVueAttribute(node, classRegex):
220220
return;
221221
case astUtil.isVLiteralValue(node):
222222
astUtil.parseNodeRecursive(node, null, parseForContradictingClassNames, true);

lib/rules/no-custom-classname.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ module.exports = {
187187
*/
188188
VAttribute: function (node) {
189189
switch (true) {
190-
case !astUtil.isValidVueAttribute(node):
190+
case !astUtil.isValidVueAttribute(node, classRegex):
191191
return;
192192
case astUtil.isVLiteralValue(node):
193193
astUtil.parseNodeRecursive(node, null, parseForCustomClassNames);

lib/util/ast.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,26 @@ function isClassAttribute(node, classRegex) {
3636
* Find out if node is `class`
3737
*
3838
* @param {ASTNode} node The AST node being checked
39+
* @param {String} classRegex Regex to test the attribute that is being checked against
3940
* @returns {Boolean}
4041
*/
41-
function isVueClassAttribute(node) {
42+
function isVueClassAttribute(node, classRegex) {
43+
const re = new RegExp(classRegex);
44+
let name = '';
4245
switch (true) {
43-
case node.key && /^class$/.test(node.key.name):
46+
case node.key && node.key.name && re.test(node.key.name):
4447
// class="vue-classes-as-litteral"
4548
return true;
46-
break;
4749
case node.key &&
4850
node.key.name &&
4951
node.key.name.name &&
5052
node.key.argument &&
5153
node.key.argument.name &&
5254
/^bind$/.test(node.key.name.name) &&
53-
/^class$/.test(node.key.argument.name):
55+
re.test(node.key.argument.name):
5456
// v-bind:class="vue-classes-as-bind"
5557
// :class="vue-classes-as-bind"
5658
return true;
57-
break;
5859
default:
5960
return false;
6061
}
@@ -154,10 +155,11 @@ function isValidJSXAttribute(node, classRegex) {
154155
* Find out if the node is a valid candidate for our rules
155156
*
156157
* @param {ASTNode} node The AST node being checked
158+
* @param {String} classRegex Regex to test the attribute that is being checked against
157159
* @returns {Boolean}
158160
*/
159-
function isValidVueAttribute(node) {
160-
if (!isVueClassAttribute(node)) {
161+
function isValidVueAttribute(node, classRegex) {
162+
if (!isVueClassAttribute(node, classRegex)) {
161163
// Only run for class attributes
162164
return false;
163165
}

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-tailwindcss",
3-
"version": "3.10.0",
3+
"version": "3.10.1-beta.3",
44
"description": "Rules enforcing best practices while using Tailwind CSS",
55
"keywords": [
66
"eslint",

0 commit comments

Comments
 (0)