File tree Expand file tree Collapse file tree 2 files changed +36
-7
lines changed Expand file tree Collapse file tree 2 files changed +36
-7
lines changed Original file line number Diff line number Diff line change 42
42
'1ex'
43
43
)
44
44
45
+ test (
46
+ 'should reduce additions and subtractions (1)' ,
47
+ testFixture ,
48
+ 'calc(100% - 10px + 20px)' ,
49
+ 'calc(100% + 10px)'
50
+ )
51
+
52
+ test (
53
+ 'should reduce additions and subtractions (2)' ,
54
+ testFixture ,
55
+ 'calc(100% + 10px - 20px)' ,
56
+ 'calc(100% - 10px)'
57
+ )
58
+
45
59
test (
46
60
'should ignore value surrounding calc function (1)' ,
47
61
testFixture ,
Original file line number Diff line number Diff line change @@ -113,17 +113,32 @@ function reduceAddSubExpression(node, precision) {
113
113
return reduce ( node , precision )
114
114
}
115
115
// (something + value) + value => something + (value + value)
116
- // (something - value ) + value => something - (value + value )
116
+ // (something - value1 ) + value2 => something - (value2 - value1 )
117
117
// (something + value) - value => something + (value - value)
118
118
// (something - value) - value => something - (value + value)
119
119
else if ( right . type === left . right . type ) {
120
120
node = Object . assign ( { } , left )
121
- node . right = reduce ( {
122
- type : 'MathExpression' ,
123
- operator : op === left . operator && op === '-' ? '+' : op ,
124
- left : left . right ,
125
- right : right
126
- } , precision )
121
+ if ( left . operator === '-' ) {
122
+ node . right = reduce ( {
123
+ type : 'MathExpression' ,
124
+ operator : op === left . operator ? '+' : '-' ,
125
+ left : right ,
126
+ right : left . right
127
+ } , precision )
128
+ node . operator = op === left . operator ? '-' : '+' ;
129
+ }
130
+ else {
131
+ node . right = reduce ( {
132
+ type : 'MathExpression' ,
133
+ operator : op ,
134
+ left : left . right ,
135
+ right : right
136
+ } , precision )
137
+ }
138
+ if ( node . right . value < 0 ) {
139
+ node . right . value *= - 1 ;
140
+ node . operator = '-' ;
141
+ }
127
142
return reduce ( node , precision )
128
143
}
129
144
}
You can’t perform that action at this time.
0 commit comments