Skip to content

Commit 594c75d

Browse files
authored
fix: do not handle non-ASCII whitespace as separator (#246)
1 parent ceddc54 commit 594c75d

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

lib/util/ast.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ function extractClassnamesFromValue(classStr) {
217217
if (typeof classStr !== 'string') {
218218
return { classNames: [], whitespaces: [], headSpace: false, tailSpace: false };
219219
}
220-
const separatorRegEx = /(\s+)/;
220+
const separatorRegEx = /([\t\n\f\r ]+)/;
221221
let parts = classStr.split(separatorRegEx);
222222
if (parts[0] === '') {
223223
parts.shift();

lib/util/prettier/order.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ function sortClasses(classStr, { env, ignoreFirst = false, ignoreLast = false })
4545
}
4646

4747
let result = '';
48-
let parts = classStr.split(/(\s+)/);
48+
let parts = classStr.split(/([\t\n\f\r ]+)/);
4949
let classes = parts.filter((_, i) => i % 2 === 0);
5050
let whitespace = parts.filter((_, i) => i % 2 !== 0);
5151

tests/lib/rules/classnames-order.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,9 @@ ruleTester.run("classnames-order", rule, {
278278
`,
279279
options: skipClassAttributeOptions,
280280
},
281+
{
282+
code: `<div class="py-1\u3000px-2 block">Do not treat full width space as class separator</div>`,
283+
},
281284
],
282285
invalid: [
283286
{
@@ -913,7 +916,7 @@ ruleTester.run("classnames-order", rule, {
913916
code: `
914917
<template>
915918
<div v-bind="data" :class="[
916-
'py-1.5 font-semibold transition',
919+
'py-1.5 font-semibold transition',
917920
{
918921
'text-white': variant === 'white',
919922
'text-blue-500 hover:text-blue-400 border-blue-500': variant === 'primary',
@@ -924,7 +927,7 @@ ruleTester.run("classnames-order", rule, {
924927
output: `
925928
<template>
926929
<div v-bind="data" :class="[
927-
'py-1.5 font-semibold transition',
930+
'py-1.5 font-semibold transition',
928931
{
929932
'text-white': variant === 'white',
930933
'border-blue-500 text-blue-500 hover:text-blue-400': variant === 'primary',

tests/lib/rules/no-custom-classname.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1398,5 +1398,13 @@ ruleTester.run("no-custom-classname", rule, {
13981398
],
13991399
errors: generateErrors("yolo custom"),
14001400
},
1401+
{
1402+
code: `<div className="px-1\u3000py-2">Full-width space between classes</div>`,
1403+
errors: generateErrors("px-1\u3000py-2"),
1404+
},
1405+
{
1406+
code: `<div className="\u3000px-1 py-2\u3000">Full-width space before and after classes</div>`,
1407+
errors: generateErrors("\u3000px-1 py-2\u3000"),
1408+
},
14011409
],
14021410
});

0 commit comments

Comments
 (0)