@@ -293,15 +293,15 @@ function tokenize(str) {
293
293
} ;
294
294
295
295
var consumeANumericToken = function ( ) {
296
- var num = consumeANumber ( ) ;
296
+ var { value , isInteger , sign } = consumeANumber ( ) ;
297
297
if ( wouldStartAnIdentifier ( next ( 1 ) , next ( 2 ) , next ( 3 ) ) ) {
298
298
const unit = consumeAName ( ) ;
299
- return new DimensionToken ( num . value , unit ) ;
299
+ return new DimensionToken ( value , unit , sign ) ;
300
300
} else if ( next ( ) == 0x25 ) {
301
301
consume ( ) ;
302
- return new PercentageToken ( num . value ) ;
302
+ return new PercentageToken ( value , sign ) ;
303
303
} else {
304
- return new NumberToken ( num . value , num . isInteger ) ;
304
+ return new NumberToken ( value , isInteger , sign ) ;
305
305
}
306
306
} ;
307
307
@@ -753,30 +753,38 @@ class NumberToken extends CSSParserToken {
753
753
}
754
754
toString ( ) {
755
755
const name = this . isInteger ? "INT" : "NUMBER" ;
756
- const sign = this . sign == "+" : "+ " : " "
756
+ const sign = this . sign == "+" : "+ " : " ";
757
757
return `${ name } (${ this . sign } ${ this . value } )` ;
758
758
}
759
759
toJSON ( ) { return { type :this . type , value :this . value , isInteger :this . isInteger , sign :this . sign } ; }
760
760
toSource ( ) { return formatNumber ( this . value , this . sign ) ; }
761
761
}
762
762
763
763
class PercentageToken extends CSSParserToken {
764
- constructor ( val ) {
764
+ constructor ( val , sign = undefined ) {
765
765
super ( "PERCENTAGE" ) ;
766
766
this . value = val ;
767
+ this . sign = sign ;
767
768
}
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 ) } %` ; }
771
775
}
772
776
773
777
class DimensionToken extends CSSParserToken {
774
- constructor ( val , unit ) {
778
+ constructor ( val , unit , sign = undefined ) {
775
779
super ( "DIMENSION" ) ;
776
780
this . value = val ;
777
781
this . unit = unit ;
782
+ this . sign = sign ;
783
+ }
784
+ toString ( ) {
785
+ const sign = this . sign == "+" : "+ " : " ";
786
+ return `DIM(${ this . sign } ${ this . value } , ${ this . unit } )` ;
778
787
}
779
- toString ( ) { `DIM(${ this . value } , ${ this . unit } )` ; }
780
788
toJSON ( ) { return { type :this . type , value :this . value , unit :this . unit } ; }
781
789
toSource ( ) {
782
790
let unit = escapeIdent ( this . unit ) ;
@@ -785,7 +793,7 @@ class DimensionToken extends CSSParserToken {
785
793
// Remove the leading "e", replace with escape.
786
794
unit = "\\65 " + unit . slice ( 1 , unit . length ) ;
787
795
}
788
- return `${ formatNumber ( this . value ) } ${ unit } ` ;
796
+ return `${ formatNumber ( this . value , this . sign ) } ${ unit } ` ;
789
797
}
790
798
}
791
799
0 commit comments