Skip to content

Commit 9ee9aaa

Browse files
fix: better parse sci notation with + and - (TrySound#55)
1 parent e8d4de9 commit 9ee9aaa

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed

lib/unit.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,28 @@ module.exports = function(value) {
2222
break;
2323
}
2424
sciPos = pos;
25+
26+
var nextCode = value.charCodeAt(pos + 1);
27+
28+
if (
29+
nextCode === plus ||
30+
nextCode === minus ||
31+
(nextCode >= 48 && nextCode <= 57)
32+
) {
33+
if (nextCode === plus || nextCode === minus) {
34+
var nextNextCode = value.charCodeAt(pos + 2);
35+
36+
if (nextNextCode < 48 || nextNextCode > 57) {
37+
break;
38+
}
39+
40+
pos += 1;
41+
}
42+
43+
pos += 1;
44+
} else {
45+
break;
46+
}
2547
} else if (code === dot) {
2648
if (dotted) {
2749
break;

test/unit.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,98 @@ var tests = [
5757
{
5858
fixture: "e1",
5959
expected: false
60+
},
61+
{
62+
fixture: "2rem",
63+
expected: { number: "2", unit: "rem" }
64+
},
65+
{
66+
fixture: "2.000rem",
67+
expected: { number: "2.000", unit: "rem" }
68+
},
69+
{
70+
fixture: "+2rem",
71+
expected: { number: "+2", unit: "rem" }
72+
},
73+
{
74+
fixture: "-2rem",
75+
expected: { number: "-2", unit: "rem" }
76+
},
77+
{
78+
fixture: "1.1rem",
79+
expected: { number: "1.1", unit: "rem" }
80+
},
81+
{
82+
fixture: "+1.1rem",
83+
expected: { number: "+1.1", unit: "rem" }
84+
},
85+
{
86+
fixture: "-1.1rem",
87+
expected: { number: "-1.1", unit: "rem" }
88+
},
89+
{
90+
fixture: "1.1e1rem",
91+
expected: { number: "1.1e1", unit: "rem" }
92+
},
93+
{
94+
fixture: "+1.1e1rem",
95+
expected: { number: "+1.1e1", unit: "rem" }
96+
},
97+
{
98+
fixture: "-1.1e1rem",
99+
expected: { number: "-1.1e1", unit: "rem" }
100+
},
101+
{
102+
fixture: "1.1e+1rem",
103+
expected: { number: "1.1e+1", unit: "rem" }
104+
},
105+
{
106+
fixture: "1.1e-1rem",
107+
expected: { number: "1.1e-1", unit: "rem" }
108+
},
109+
{
110+
fixture: "1.1e1e1rem",
111+
expected: { number: "1.1e1", unit: "e1rem" }
112+
},
113+
{
114+
fixture: "1.1e-1e",
115+
expected: { number: "1.1e-1", unit: "e" }
116+
},
117+
{
118+
fixture: "1.1e-1rem",
119+
expected: { number: "1.1e-1", unit: "rem" }
120+
},
121+
{
122+
fixture: "1.1e--++1e",
123+
expected: { number: "1.1", unit: "e--++1e" }
124+
},
125+
{
126+
fixture: "1.1e--++1rem",
127+
expected: { number: "1.1", unit: "e--++1rem" }
128+
},
129+
{
130+
fixture: "100+px",
131+
expected: { number: "100", unit: "+px" }
132+
},
133+
{
134+
fixture: "100.0.0px",
135+
expected: { number: "100.0", unit: ".0px" }
136+
},
137+
{
138+
fixture: "100e1epx",
139+
expected: { number: "100e1", unit: "epx" }
140+
},
141+
{
142+
fixture: "100e1e1px",
143+
expected: { number: "100e1", unit: "e1px" }
144+
},
145+
{
146+
fixture: "+100.1e+1e+1px",
147+
expected: { number: "+100.1e+1", unit: "e+1px" }
148+
},
149+
{
150+
fixture: "-100.1e-1e-1px",
151+
expected: { number: "-100.1e-1", unit: "e-1px" }
60152
}
61153
];
62154

0 commit comments

Comments
 (0)