File tree 2 files changed +26
-5
lines changed
2 files changed +26
-5
lines changed Original file line number Diff line number Diff line change 1
1
var minus = '-' . charCodeAt ( 0 ) ;
2
2
var plus = '+' . charCodeAt ( 0 ) ;
3
3
var dot = '.' . charCodeAt ( 0 ) ;
4
+ var exp = 'e' . charCodeAt ( 0 ) ;
5
+ var EXP = 'E' . charCodeAt ( 0 ) ;
4
6
5
7
module . exports = function ( value ) {
6
8
var pos = 0 ;
7
9
var length = value . length ;
8
10
var dotted = false ;
11
+ var sciPos = - 1 ;
9
12
var containsNumber = false ;
10
13
var code ;
11
- var number = '' ;
12
14
13
15
while ( pos < length ) {
14
16
code = value . charCodeAt ( pos ) ;
15
17
16
18
if ( code >= 48 && code <= 57 ) {
17
- number += value [ pos ] ;
18
19
containsNumber = true ;
20
+ } else if ( code === exp || code === EXP ) {
21
+ if ( sciPos > - 1 ) {
22
+ break ;
23
+ }
24
+ sciPos = pos ;
19
25
} else if ( code === dot ) {
20
26
if ( dotted ) {
21
27
break ;
22
28
}
23
29
dotted = true ;
24
- number += value [ pos ] ;
25
30
} else if ( code === plus || code === minus ) {
26
31
if ( pos !== 0 ) {
27
32
break ;
28
33
}
29
- number += value [ pos ] ;
30
34
} else {
31
35
break ;
32
36
}
33
37
34
38
pos += 1 ;
35
39
}
36
40
41
+ if ( sciPos + 1 === pos ) pos -- ;
42
+
37
43
return containsNumber ? {
38
- number : number ,
44
+ number : value . slice ( 0 , pos ) ,
39
45
unit : value . slice ( pos )
40
46
} : false ;
41
47
} ;
Original file line number Diff line number Diff line change @@ -25,6 +25,21 @@ var tests = [{
25
25
} , {
26
26
fixture : '.rem' ,
27
27
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
28
43
} ] ;
29
44
30
45
test ( 'Unit' , function ( t ) {
You can’t perform that action at this time.
0 commit comments