Skip to content

Commit e2c2379

Browse files
authored
Merge pull request MoOx#35 from Semigradsky/28-fix-incorrect-reducing
Fix incorrect reducing
2 parents 6afea7d + b835e84 commit e2c2379

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/__tests__/index.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ test(
4949
'60px'
5050
)
5151

52+
test(
53+
'should reduce simple calc (6)',
54+
testFixture,
55+
'calc(100px - (100px - 100%))',
56+
'100%'
57+
)
58+
5259
test(
5360
'should reduce additions and subtractions (1)',
5461
testFixture,
@@ -144,7 +151,7 @@ test(
144151
'should ignore calc with css variables (5)',
145152
testFixture,
146153
'calc(10px - (100px - var(--mouseX)))',
147-
'calc(-90px - var(--mouseX))'
154+
'calc(-90px + var(--mouseX))'
148155
)
149156

150157
test(

src/lib/reducer.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ function reduceAddSubExpression(node, precision) {
9595
) {
9696
// value + (value + something) => (value + value) + something
9797
// value + (value - something) => (value + value) - something
98-
// value - (value + something) => (value - value) + something
99-
// value - (value - something) => (value - value) - something
98+
// value - (value + something) => (value - value) - something
99+
// value - (value - something) => (value - value) + something
100100
if (left.type === right.left.type) {
101101
node = Object.assign({ }, node)
102102
node.left = reduce({
@@ -106,6 +106,11 @@ function reduceAddSubExpression(node, precision) {
106106
right: right.left
107107
}, precision)
108108
node.right = right.right
109+
110+
if (node.operator === '-') {
111+
node.operator = right.operator === '+' ? '-' : '+'
112+
}
113+
109114
return reduce(node, precision)
110115
}
111116
// value + (something + value) => (value + value) + something

0 commit comments

Comments
 (0)