elm/libraries/Native/Prelude.js
Evan Czaplicki b40f2958d4 New convention for storing module values, fixes bug
Before it was not possible to add values to anything except leafs of
the namespace structure.
2013-09-30 01:32:27 -07:00

52 lines
1.3 KiB
JavaScript

Elm.Native.Prelude = {};
Elm.Native.Prelude.make = function(elm) {
elm.Native = elm.Native || {};
elm.Native.Prelude = elm.Native.Prelude || {};
if (elm.Native.Prelude.values) return elm.Native.Prelude.values;
var JS = Elm.Native.JavaScript.make(elm);
var Maybe = Elm.Maybe.make(elm);
var Char = Elm.Char.make(elm);
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));
}
return elm.Native.Prelude.values = {
readInt:readInt,
readFloat:readFloat
};
};