File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11var minus = '-' . charCodeAt ( 0 ) ;
22var plus = '+' . charCodeAt ( 0 ) ;
33var dot = '.' . charCodeAt ( 0 ) ;
4+ var exp = 'e' . charCodeAt ( 0 ) ;
5+ var EXP = 'E' . charCodeAt ( 0 ) ;
46
57module . exports = function ( value ) {
68 var pos = 0 ;
79 var length = value . length ;
810 var dotted = false ;
11+ var sciPos = - 1 ;
912 var containsNumber = false ;
1013 var code ;
11- var number = '' ;
1214
1315 while ( pos < length ) {
1416 code = value . charCodeAt ( pos ) ;
1517
1618 if ( code >= 48 && code <= 57 ) {
17- number += value [ pos ] ;
1819 containsNumber = true ;
20+ } else if ( code === exp || code === EXP ) {
21+ if ( sciPos > - 1 ) {
22+ break ;
23+ }
24+ sciPos = pos ;
1925 } else if ( code === dot ) {
2026 if ( dotted ) {
2127 break ;
2228 }
2329 dotted = true ;
24- number += value [ pos ] ;
2530 } else if ( code === plus || code === minus ) {
2631 if ( pos !== 0 ) {
2732 break ;
2833 }
29- number += value [ pos ] ;
3034 } else {
3135 break ;
3236 }
3337
3438 pos += 1 ;
3539 }
3640
41+ if ( sciPos + 1 === pos ) pos -- ;
42+
3743 return containsNumber ? {
38- number : number ,
44+ number : value . slice ( 0 , pos ) ,
3945 unit : value . slice ( pos )
4046 } : false ;
4147} ;
Original file line number Diff line number Diff line change @@ -25,6 +25,21 @@ var tests = [{
2525} , {
2626 fixture : '.rem' ,
2727 expected : false
28+ } , {
29+ fixture : '1e4px' ,
30+ expected : { number : '1e4' , unit : 'px' }
31+ } , {
32+ fixture : '1em' ,
33+ expected : { number : '1' , unit : 'em' }
34+ } , {
35+ fixture : '1e10' ,
36+ expected : { number : '1e10' , unit : '' }
37+ } , {
38+ fixture : '' ,
39+ expected : false
40+ } , {
41+ fixture : 'e' ,
42+ expected : false
2843} ] ;
2944
3045test ( 'Unit' , function ( t ) {
You can’t perform that action at this time.
0 commit comments