From 460e57434dcb24d03fb76ec3389e9bfc56cd7ff7 Mon Sep 17 00:00:00 2001 From: kurageso <63407106+kurageso@users.noreply.github.com> Date: Wed, 23 Nov 2022 19:09:13 +0900 Subject: [PATCH 1/6] fix(vue/attribute-hyphenation): disable autofix to kebab case if attribute name contains `_` --- lib/rules/attribute-hyphenation.js | 12 ++- tests/lib/rules/attribute-hyphenation.js | 94 ++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 2 deletions(-) diff --git a/lib/rules/attribute-hyphenation.js b/lib/rules/attribute-hyphenation.js index d2ae0ccac..87a398e4f 100644 --- a/lib/rules/attribute-hyphenation.js +++ b/lib/rules/attribute-hyphenation.js @@ -94,8 +94,16 @@ module.exports = { data: { text }, - fix: (fixer) => - fixer.replaceText(node.key, text.replace(name, caseConverter(name))) + fix: (fixer) => { + if (useHyphenated && text.includes('_')) { + return null + } + + return fixer.replaceText( + node.key, + text.replace(name, caseConverter(name)) + ) + } }) } diff --git a/tests/lib/rules/attribute-hyphenation.js b/tests/lib/rules/attribute-hyphenation.js index 002254dd0..a2b997af8 100644 --- a/tests/lib/rules/attribute-hyphenation.js +++ b/tests/lib/rules/attribute-hyphenation.js @@ -58,6 +58,16 @@ ruleTester.run('attribute-hyphenation', rule, { filename: 'test.vue', code: '', options: ['never'] + }, + { + filename: 'test.vue', + code: '', + options: ['always'] + }, + { + filename: 'test.vue', + code: '', + options: ['always'] } ], @@ -280,6 +290,90 @@ ruleTester.run('attribute-hyphenation', rule, { line: 1 } ] + }, + { + filename: 'test.vue', + code: '', + output: + '', + options: ['always'], + errors: [ + { + message: "Attribute ':AttrEe' must be hyphenated.", + type: 'VDirectiveKey', + line: 1 + } + ] + }, + { + filename: 'test.vue', + code: '', + output: + '', + options: ['always'], + errors: [ + { + message: "Attribute ':attr_Gg' must be hyphenated.", + type: 'VDirectiveKey', + line: 1 + } + ] + }, + { + filename: 'test.vue', + code: '', + output: + '', + options: ['always'], + errors: [ + { + message: "Attribute ':Attr_Hh' must be hyphenated.", + type: 'VDirectiveKey', + line: 1 + } + ] + }, + { + filename: 'test.vue', + code: '', + output: + '', + options: ['always'], + errors: [ + { + message: "Attribute ':_attr_Jj' must be hyphenated.", + type: 'VDirectiveKey', + line: 1 + } + ] + }, + { + filename: 'test.vue', + code: '', + output: + '', + options: ['always'], + errors: [ + { + message: "Attribute ':_attrKk' must be hyphenated.", + type: 'VDirectiveKey', + line: 1 + } + ] + }, + { + filename: 'test.vue', + code: '', + output: + '', + options: ['always'], + errors: [ + { + message: "Attribute ':_AttrLl' must be hyphenated.", + type: 'VDirectiveKey', + line: 1 + } + ] } ] }) From 5b2d44a298ab552dedb05c83d498fd3d3711fb5a Mon Sep 17 00:00:00 2001 From: kurageso <63407106+kurageso@users.noreply.github.com> Date: Wed, 23 Nov 2022 20:22:35 +0900 Subject: [PATCH 2/6] use `output: null` --- tests/lib/rules/attribute-hyphenation.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/tests/lib/rules/attribute-hyphenation.js b/tests/lib/rules/attribute-hyphenation.js index a2b997af8..feee4068b 100644 --- a/tests/lib/rules/attribute-hyphenation.js +++ b/tests/lib/rules/attribute-hyphenation.js @@ -308,8 +308,7 @@ ruleTester.run('attribute-hyphenation', rule, { { filename: 'test.vue', code: '', - output: - '', + output: null, options: ['always'], errors: [ { @@ -322,8 +321,7 @@ ruleTester.run('attribute-hyphenation', rule, { { filename: 'test.vue', code: '', - output: - '', + output: null, options: ['always'], errors: [ { @@ -336,8 +334,7 @@ ruleTester.run('attribute-hyphenation', rule, { { filename: 'test.vue', code: '', - output: - '', + output: null, options: ['always'], errors: [ { @@ -350,8 +347,7 @@ ruleTester.run('attribute-hyphenation', rule, { { filename: 'test.vue', code: '', - output: - '', + output: null, options: ['always'], errors: [ { @@ -364,8 +360,7 @@ ruleTester.run('attribute-hyphenation', rule, { { filename: 'test.vue', code: '', - output: - '', + output: null, options: ['always'], errors: [ { From 321ea51ba510ffb5adb2be61607c1ac290c6b432 Mon Sep 17 00:00:00 2001 From: kurageso <63407106+kurageso@users.noreply.github.com> Date: Wed, 23 Nov 2022 20:27:42 +0900 Subject: [PATCH 3/6] remove a redundant test --- tests/lib/rules/attribute-hyphenation.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/lib/rules/attribute-hyphenation.js b/tests/lib/rules/attribute-hyphenation.js index feee4068b..5bcdb5745 100644 --- a/tests/lib/rules/attribute-hyphenation.js +++ b/tests/lib/rules/attribute-hyphenation.js @@ -63,11 +63,6 @@ ruleTester.run('attribute-hyphenation', rule, { filename: 'test.vue', code: '', options: ['always'] - }, - { - filename: 'test.vue', - code: '', - options: ['always'] } ], From 9fefd1f41d2b7e6d5df28c36f74ec0fd97bab552 Mon Sep 17 00:00:00 2001 From: kurageso <63407106+kurageso@users.noreply.github.com> Date: Wed, 23 Nov 2022 20:29:10 +0900 Subject: [PATCH 4/6] remove a redundant test --- tests/lib/rules/attribute-hyphenation.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/tests/lib/rules/attribute-hyphenation.js b/tests/lib/rules/attribute-hyphenation.js index 5bcdb5745..faef29f11 100644 --- a/tests/lib/rules/attribute-hyphenation.js +++ b/tests/lib/rules/attribute-hyphenation.js @@ -286,20 +286,6 @@ ruleTester.run('attribute-hyphenation', rule, { } ] }, - { - filename: 'test.vue', - code: '', - output: - '', - options: ['always'], - errors: [ - { - message: "Attribute ':AttrEe' must be hyphenated.", - type: 'VDirectiveKey', - line: 1 - } - ] - }, { filename: 'test.vue', code: '', From e8c35634a5568116d6ae2c6f4f5bb8f8da7c12db Mon Sep 17 00:00:00 2001 From: kurageso <63407106+kurageso@users.noreply.github.com> Date: Wed, 23 Nov 2022 23:29:09 +0900 Subject: [PATCH 5/6] add test cases with current spec --- tests/lib/rules/attribute-hyphenation.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/lib/rules/attribute-hyphenation.js b/tests/lib/rules/attribute-hyphenation.js index faef29f11..01663bfaa 100644 --- a/tests/lib/rules/attribute-hyphenation.js +++ b/tests/lib/rules/attribute-hyphenation.js @@ -63,6 +63,11 @@ ruleTester.run('attribute-hyphenation', rule, { filename: 'test.vue', code: '', options: ['always'] + }, + { + filename: 'test.vue', + code: '', + options: ['never'] } ], @@ -350,6 +355,20 @@ ruleTester.run('attribute-hyphenation', rule, { line: 1 } ] + }, + { + filename: 'test.vue', + code: '', + output: + '', + options: ['never'], + errors: [ + { + message: "Attribute ':my-custom_prop' can't be hyphenated.", + type: 'VDirectiveKey', + line: 1 + } + ] } ] }) From 38d6e1bedcab702c052fae9039532a260f82e934 Mon Sep 17 00:00:00 2001 From: kurageso <63407106+kurageso@users.noreply.github.com> Date: Wed, 23 Nov 2022 23:34:21 +0900 Subject: [PATCH 6/6] fixed a problem when converting to CamelCase --- lib/rules/attribute-hyphenation.js | 2 +- tests/lib/rules/attribute-hyphenation.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/rules/attribute-hyphenation.js b/lib/rules/attribute-hyphenation.js index 87a398e4f..24bacffc2 100644 --- a/lib/rules/attribute-hyphenation.js +++ b/lib/rules/attribute-hyphenation.js @@ -95,7 +95,7 @@ module.exports = { text }, fix: (fixer) => { - if (useHyphenated && text.includes('_')) { + if (text.includes('_')) { return null } diff --git a/tests/lib/rules/attribute-hyphenation.js b/tests/lib/rules/attribute-hyphenation.js index 01663bfaa..146c25658 100644 --- a/tests/lib/rules/attribute-hyphenation.js +++ b/tests/lib/rules/attribute-hyphenation.js @@ -359,8 +359,7 @@ ruleTester.run('attribute-hyphenation', rule, { { filename: 'test.vue', code: '', - output: - '', + output: null, options: ['never'], errors: [ { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy