Skip to content

Commit

Permalink
Do not change case of property name if inside a variable declaration …
Browse files Browse the repository at this point in the history
…in LESS (#14034)

Co-authored-by: fisker Cheung <lionkay@gmail.com>
  • Loading branch information
mvorisek and fisker committed Jan 3, 2023
1 parent 0e25b13 commit 41cee06
Show file tree
Hide file tree
Showing 5 changed files with 241 additions and 3 deletions.
19 changes: 19 additions & 0 deletions changelog_unreleased/less/14034.md
@@ -0,0 +1,19 @@
#### Do not change case of property name if inside a variable declaration in LESS (#14034 by @mvorisek)

<!-- prettier-ignore -->
```less
// Input
@var: {
preserveCase: 0;
};

// Prettier stable
@var: {
preservecase: 0;
};

// Prettier main
@var: {
preserveCase: 0;
};
```
10 changes: 9 additions & 1 deletion src/language-css/parser-postcss.js
Expand Up @@ -492,13 +492,21 @@ function parseNestedCSS(node, options) {
node.params[0] === ":"
) {
node.variable = true;
node.value = parseValue(node.params.slice(1), options);
const text = node.params.slice(1);
if (text) {
node.value = parseValue(text, options);
}
node.raws.afterName += ":";
}

// Less variable
if (node.variable) {
delete node.params;

if (!node.value) {
delete node.value;
}

return node;
}
}
Expand Down
6 changes: 5 additions & 1 deletion src/language-css/printer-postcss.js
Expand Up @@ -158,7 +158,11 @@ function genericPrint(path, options, print) {

return [
node.raws.before.replace(/[\s;]/g, ""),
insideICSSRuleNode(path) ? node.prop : maybeToLowerCase(node.prop),
// Less variable
(parentNode.type === "css-atrule" && parentNode.variable) ||
insideICSSRuleNode(path)
? node.prop
: maybeToLowerCase(node.prop),
trimmedBetween.startsWith("//") ? " " : "",
trimmedBetween,
node.extend ? "" : " ",
Expand Down
144 changes: 143 additions & 1 deletion tests/format/less/case/__snapshots__/jsfmt.spec.js.snap
Expand Up @@ -204,7 +204,7 @@ svg[viewBox] linearGradient,
}
@KeepDetachedRuleset: /*:*/ {
background: RED;
BACKGROUND: RED;
};
%KeepScssPlaceholderSelector {
Expand Down Expand Up @@ -321,3 +321,145 @@ TABLE {
================================================================================
`;

exports[`variable.less format 1`] = `
====================================options=====================================
parsers: ["less"]
printWidth: 80
| printWidth
=====================================input======================================
// Do not change case of property name if inside a variable declaration
@var: {
notVar: 0;
@notVarNested: {
notVar: 1;
notVar2: 2;
};
};
@var : {
preserveCase: 5;
};
@var: {
preserveCase: 5;
};
@var :{
preserveCase: 5;
};
@var /* comment */ : /* comment */ {
preserveCase: 5;
};
@var: /* comment */ {
preserveCase: 5;
};
@var /* comment */ :{
preserveCase: 5;
};
@var // comment
: // comment
{
/* FIXME: should not change case */
preserveCase: 5;
};
@var: // comment
{
preserveCase: 5;
};
@var // comment
:{
/* FIXME: should not change case */
preserveCase: 5;
};
// Known css properties
@var: {
COLoR: RED;
};
@not-var {
canChangeCase: @var[@notVarNested][notVar];
canChangeCase: @var[ @notVarNested][notVar];
canChangeCase: @var[@notVarNested ][notVar];
canChangeCase: @var[@notVarNested][ notVar];
canChangeCase: @var[@notVarNested][notVar ];
canChangeCase: @var[notVar];
}
=====================================output=====================================
// Do not change case of property name if inside a variable declaration
@var: {
notVar: 0;
@notVarNested: {
notVar: 1;
notVar2: 2;
};
};
@var: {
preserveCase: 5;
};
@var: {
preserveCase: 5;
};
@var: {
preserveCase: 5;
};
@var: /* comment */ {
preserveCase: 5;
};
@var: /* comment */ {
preserveCase: 5;
};
@var: {
preserveCase: 5;
};
@var // comment
: // comment
{
/* FIXME: should not change case */
preservecase: 5;
}
@var: // comment
{
preserveCase: 5;
};
@var // comment
: {
/* FIXME: should not change case */
preservecase: 5;
}
// Known css properties
@var: {
COLoR: RED;
};
@not-var {
canchangecase: @var[ @notVarNested][notVar];
canchangecase: @var[ @notVarNested][notVar];
canchangecase: @var[ @notVarNested ][notVar];
canchangecase: @var[ @notVarNested][ notVar];
canchangecase: @var[ @notVarNested][notVar ];
canchangecase: @var[notVar];
}
================================================================================
`;
65 changes: 65 additions & 0 deletions tests/format/less/case/variable.less
@@ -0,0 +1,65 @@
// Do not change case of property name if inside a variable declaration

@var: {
notVar: 0;
@notVarNested: {
notVar: 1;
notVar2: 2;
};
};

@var : {
preserveCase: 5;
};

@var: {
preserveCase: 5;
};

@var :{
preserveCase: 5;
};

@var /* comment */ : /* comment */ {
preserveCase: 5;
};

@var: /* comment */ {
preserveCase: 5;
};

@var /* comment */ :{
preserveCase: 5;
};

@var // comment
: // comment
{
/* FIXME: should not change case */
preserveCase: 5;
};

@var: // comment
{
preserveCase: 5;
};

@var // comment
:{
/* FIXME: should not change case */
preserveCase: 5;
};

// Known css properties
@var: {
COLoR: RED;
};

@not-var {
canChangeCase: @var[@notVarNested][notVar];
canChangeCase: @var[ @notVarNested][notVar];
canChangeCase: @var[@notVarNested ][notVar];
canChangeCase: @var[@notVarNested][ notVar];
canChangeCase: @var[@notVarNested][notVar ];
canChangeCase: @var[notVar];
}

0 comments on commit 41cee06

Please sign in to comment.