diff --git a/malva/src/doc_gen/value.rs b/malva/src/doc_gen/value.rs index ab6b9f8..24dff76 100644 --- a/malva/src/doc_gen/value.rs +++ b/malva/src/doc_gen/value.rs @@ -299,23 +299,31 @@ impl<'s> DocGen<'s> for Function<'s> { ctx: &Ctx<'_, 's>, state: &State, ) -> Doc<'s> { - Doc::list( - itertools::intersperse( - group.iter().map(|arg| { - let arg_span = arg.span(); - Doc::list( - ctx.end_spaced_comments(ctx.get_comments_between( - mem::replace(pos, arg_span.end), - arg_span.start, - )) - .collect(), - ) - .append(arg.doc(ctx, state)) - }), - separator, - ) - .collect(), - ) + Doc::list(group.iter().enumerate().fold( + Vec::with_capacity(group.len()), + |mut docs, (i, arg)| { + let arg_span = arg.span(); + if i > 0 && *pos < arg_span.start { + docs.push(separator.clone()); + } + docs.extend(ctx.end_spaced_comments( + ctx.get_comments_between(mem::replace(pos, arg_span.end), arg_span.start), + )); + match arg { + ComponentValue::Number(number) + if i > 0 + && matches!( + group.get(i - 1), + Some(ComponentValue::InterpolableIdent(..)) + ) => + { + docs.push(Doc::text(number.raw)); + } + _ => docs.push(arg.doc(ctx, state)), + } + docs + }, + )) } let separator = if args_groups.len() == 1 { diff --git a/malva/tests/fmt/css/color/color-adjuster.snap b/malva/tests/fmt/css/color/color-adjuster.snap index a1d80d6..11a1fbe 100644 --- a/malva/tests/fmt/css/color/color-adjuster.snap +++ b/malva/tests/fmt/css/color/color-adjuster.snap @@ -126,7 +126,7 @@ source: malva/tests/fmt.rs color: color(red hue(+20deg)); color: color(red hue(-20)); color: color(red hue(-20deg)); - color: color(red hue(* 20)); - color: color(red hue(* 20deg)); + color: color(red hue(*20)); + color: color(red hue(*20deg)); color: color(var(--highlightColor) blackness(+ 20%)); } diff --git a/malva/tests/fmt/css/functions/theme.css b/malva/tests/fmt/css/functions/theme.css new file mode 100644 index 0000000..388dcd5 --- /dev/null +++ b/malva/tests/fmt/css/functions/theme.css @@ -0,0 +1,3 @@ +:root { + --color-accent-fg: theme(colors.slate.100); +} diff --git a/malva/tests/fmt/css/functions/theme.snap b/malva/tests/fmt/css/functions/theme.snap new file mode 100644 index 0000000..9de9ee6 --- /dev/null +++ b/malva/tests/fmt/css/functions/theme.snap @@ -0,0 +1,6 @@ +--- +source: malva/tests/fmt.rs +--- +:root { + --color-accent-fg: theme(colors.slate.100); +} diff --git a/malva/tests/fmt/css/postcss-8-improment/test.snap b/malva/tests/fmt/css/postcss-8-improment/test.snap index 5cf5186..86b401e 100644 --- a/malva/tests/fmt/css/postcss-8-improment/test.snap +++ b/malva/tests/fmt/css/postcss-8-improment/test.snap @@ -13,7 +13,7 @@ https://github.com/postcss/postcss/releases/tag/8.0.0 --javascript: function(rule) { console.log(rule) }; } -@supports (--element(".minwidth", { "minWidth" : 300 })) { +@supports (--element(".minwidth", { "minWidth": 300 })) { [--self] { background: greenyellow; } diff --git a/malva/tests/fmt/scss/parens/parens.snap b/malva/tests/fmt/scss/parens/parens.snap index 08fd967..425dc3e 100644 --- a/malva/tests/fmt/scss/parens/parens.snap +++ b/malva/tests/fmt/scss/parens/parens.snap @@ -61,7 +61,7 @@ a { prop31: (#{$width} / 2px) (8px / #{$width}) (#{$width} / 2px) ( 8px / #{$width} ); - prop32: func(8px / 2); + prop32: func(8px/2); prop33: 5px + 8px/2px; prop34: func(+20px, +20px); prop35: 1 + 1 + 1 + 1; @@ -96,8 +96,8 @@ a { prop72: 1 - "test" 1 - "test" 1 - "test" 1 - "test"; prop73: calc(100% * 2px) calc(100% * 2px) calc(100% * 2px) calc(100% * 2px); prop74: calc(100% / 2px) calc(100% / 2px) calc(100% / 2px) calc(100% / 2px); - prop75: calc(100% +2px) calc(100% +2px) calc(100% + 2px) calc(100% + 2px); - prop76: calc(100% -2px) calc(100% -2px) calc(100% - 2px) calc(100% - 2px); + prop75: calc(100%+2px) calc(100% +2px) calc(100% + 2px) calc(100% + 2px); + prop76: calc(100%-2px) calc(100% -2px) calc(100% - 2px) calc(100% - 2px); prop77: calc(-5px); prop78: calc(+5px); prop79: calc(-100px + 100px);