Skip to content

Commit 45d5978

Browse files
committed
Actually *use* the sign character.
1 parent 1a9adc8 commit 45d5978

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

parse-css.js

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -293,15 +293,15 @@ function tokenize(str) {
293293
};
294294

295295
var consumeANumericToken = function() {
296-
var num = consumeANumber();
296+
var {value, isInteger, sign} = consumeANumber();
297297
if(wouldStartAnIdentifier(next(1), next(2), next(3))) {
298298
const unit = consumeAName();
299-
return new DimensionToken(num.value, unit);
299+
return new DimensionToken(value, unit, sign);
300300
} else if(next() == 0x25) {
301301
consume();
302-
return new PercentageToken(num.value);
302+
return new PercentageToken(value, sign);
303303
} else {
304-
return new NumberToken(num.value, num.isInteger);
304+
return new NumberToken(value, isInteger, sign);
305305
}
306306
};
307307

@@ -753,30 +753,38 @@ class NumberToken extends CSSParserToken {
753753
}
754754
toString() {
755755
const name = this.isInteger ? "INT" : "NUMBER";
756-
const sign = this.sign == "+" : "+" : ""
756+
const sign = this.sign == "+" : "+" : "";
757757
return `${name}(${this.sign}${this.value})`;
758758
}
759759
toJSON() { return {type:this.type, value:this.value, isInteger:this.isInteger, sign:this.sign}; }
760760
toSource() { return formatNumber(this.value, this.sign); }
761761
}
762762

763763
class PercentageToken extends CSSParserToken {
764-
constructor(val) {
764+
constructor(val, sign=undefined) {
765765
super("PERCENTAGE");
766766
this.value = val;
767+
this.sign = sign;
767768
}
768-
toString() { `PERCENTAGE(${this.value})`; }
769-
toJSON() { return {type:this.type, value:this.value}; }
770-
toSource() { return `${formatNumber(this.value)}%`; }
769+
toString() {
770+
const sign = this.sign == "+" : "+" : "";
771+
return `PERCENTAGE(${this.sign}${this.value})`;
772+
}
773+
toJSON() { return {type:this.type, value:this.value, sign:this.sign}; }
774+
toSource() { return `${formatNumber(this.value, this.sign)}%`; }
771775
}
772776

773777
class DimensionToken extends CSSParserToken {
774-
constructor(val, unit) {
778+
constructor(val, unit, sign=undefined) {
775779
super("DIMENSION");
776780
this.value = val;
777781
this.unit = unit;
782+
this.sign = sign;
783+
}
784+
toString() {
785+
const sign = this.sign == "+" : "+" : "";
786+
return `DIM(${this.sign}${this.value}, ${this.unit})`;
778787
}
779-
toString() { `DIM(${this.value}, ${this.unit})`; }
780788
toJSON() { return {type:this.type, value:this.value, unit:this.unit}; }
781789
toSource() {
782790
let unit = escapeIdent(this.unit);
@@ -785,7 +793,7 @@ class DimensionToken extends CSSParserToken {
785793
// Remove the leading "e", replace with escape.
786794
unit = "\\65 " + unit.slice(1, unit.length);
787795
}
788-
return `${formatNumber(this.value)}${unit}`;
796+
return `${formatNumber(this.value, this.sign)}${unit}`;
789797
}
790798
}
791799

0 commit comments

Comments
 (0)