@@ -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
763763class 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
773777class 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