2013-09-30 07:44:31 +00:00
|
|
|
Elm.Native.Prelude = {};
|
|
|
|
Elm.Native.Prelude.make = function(elm) {
|
2013-09-30 08:32:27 +00:00
|
|
|
elm.Native = elm.Native || {};
|
|
|
|
elm.Native.Prelude = elm.Native.Prelude || {};
|
|
|
|
if (elm.Native.Prelude.values) return elm.Native.Prelude.values;
|
2013-08-04 19:22:58 +00:00
|
|
|
|
2013-09-30 07:44:31 +00:00
|
|
|
var JS = Elm.Native.JavaScript.make(elm);
|
|
|
|
var Maybe = Elm.Maybe.make(elm);
|
|
|
|
var Char = Elm.Char.make(elm);
|
2013-08-04 19:22:58 +00:00
|
|
|
|
|
|
|
function readInt(str) {
|
|
|
|
var s = JS.fromString(str);
|
|
|
|
var len = s.length;
|
|
|
|
if (len === 0) { return Maybe.Nothing; }
|
|
|
|
var start = 0;
|
|
|
|
if (s[0] == '-') {
|
|
|
|
if (len === 1) { return Maybe.Nothing; }
|
|
|
|
start = 1;
|
|
|
|
}
|
|
|
|
for (var i = start; i < len; ++i) {
|
|
|
|
if (!Char.isDigit(s[i])) { return Maybe.Nothing; }
|
|
|
|
}
|
|
|
|
return Maybe.Just(parseInt(s, 10));
|
|
|
|
}
|
|
|
|
|
|
|
|
function readFloat(str) {
|
|
|
|
var s = JS.fromString(str);
|
|
|
|
var len = s.length;
|
|
|
|
if (len === 0) { return Maybe.Nothing; }
|
|
|
|
var start = 0;
|
|
|
|
if (s[0] == '-') {
|
|
|
|
if (len === 1) { return Maybe.Nothing; }
|
|
|
|
start = 1;
|
|
|
|
}
|
|
|
|
var dotCount = 0;
|
|
|
|
for (var i = start; i < len; ++i) {
|
|
|
|
if (Char.isDigit(s[i])) { continue; }
|
|
|
|
if (s[i] === '.') {
|
|
|
|
dotCount += 1;
|
|
|
|
if (dotCount <= 1) { continue; }
|
|
|
|
}
|
|
|
|
return Maybe.Nothing;
|
|
|
|
}
|
|
|
|
return Maybe.Just(parseFloat(s));
|
|
|
|
}
|
|
|
|
|
2013-09-30 08:32:27 +00:00
|
|
|
return elm.Native.Prelude.values = {
|
2013-08-04 19:22:58 +00:00
|
|
|
readInt:readInt,
|
2013-09-30 08:32:27 +00:00
|
|
|
readFloat:readFloat
|
2013-08-04 19:22:58 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
};
|