You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
953 B
49 lines
953 B
var minus = "-".charCodeAt(0); |
|
var plus = "+".charCodeAt(0); |
|
var dot = ".".charCodeAt(0); |
|
var exp = "e".charCodeAt(0); |
|
var EXP = "E".charCodeAt(0); |
|
|
|
module.exports = function(value) { |
|
var pos = 0; |
|
var length = value.length; |
|
var dotted = false; |
|
var sciPos = -1; |
|
var containsNumber = false; |
|
var code; |
|
|
|
while (pos < length) { |
|
code = value.charCodeAt(pos); |
|
|
|
if (code >= 48 && code <= 57) { |
|
containsNumber = true; |
|
} else if (code === exp || code === EXP) { |
|
if (sciPos > -1) { |
|
break; |
|
} |
|
sciPos = pos; |
|
} else if (code === dot) { |
|
if (dotted) { |
|
break; |
|
} |
|
dotted = true; |
|
} else if (code === plus || code === minus) { |
|
if (pos !== 0) { |
|
break; |
|
} |
|
} else { |
|
break; |
|
} |
|
|
|
pos += 1; |
|
} |
|
|
|
if (sciPos + 1 === pos) pos--; |
|
|
|
return containsNumber |
|
? { |
|
number: value.slice(0, pos), |
|
unit: value.slice(pos) |
|
} |
|
: false; |
|
};
|
|
|