dcbe2fc245
Currently, it's only possible to create modules at the leafs of the namespace structure. This CL lifts that restriction. Get rid of "use strict" in many cases.
108 lines
2.6 KiB
JavaScript
108 lines
2.6 KiB
JavaScript
|
|
Elm.Native.Basics = {};
|
|
Elm.Native.Basics.make = function(elm) {
|
|
if (elm.Native.Basics) return elm.Native.Basics;
|
|
|
|
var JS = Elm.Native.JavaScript.make(elm);
|
|
// var Maybe = Elm.Maybe(elm);
|
|
var Utils = Elm.Native.Utils.make(elm);
|
|
//var Char = Elm.Char(elm);
|
|
|
|
function div(a,b) { return (a/b)|0; }
|
|
function rem(a,b) { return a % b; }
|
|
var mod = Utils.mod;
|
|
function abs(x) { return x < 0 ? -x : x; }
|
|
function logBase(base,n) { return Math.log(n) / Math.log(base); }
|
|
function min(a,b) { return Utils.cmp(a,b) < 0 ? a : b; }
|
|
function max(a,b) { return Utils.cmp(a,b) > 0 ? a : b; }
|
|
function clamp(lo,hi,n) {
|
|
return Utils.cmp(n,lo) < 0 ? lo : Utils.cmp(n,hi) > 0 ? hi : n; }
|
|
function xor(a,b) { return a !== b; }
|
|
function not(b) { return !b; }
|
|
|
|
function truncate(n) { return n|0; }
|
|
|
|
function curry(f,a,b) { return f(Utils.Tuple2(a,b)); }
|
|
function uncurry(f,v) { return A2(f,v._0,v._1); }
|
|
function fst(t) { return t._0; }
|
|
function snd(t) { return t._1; }
|
|
/*
|
|
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));
|
|
}
|
|
*/
|
|
var basics = {
|
|
div:F2(div),
|
|
rem:F2(rem),
|
|
mod:mod,
|
|
|
|
pi:Math.PI,
|
|
e:Math.e,
|
|
cos:Math.cos,
|
|
sin:Math.sin,
|
|
tan:Math.tan,
|
|
acos:Math.acos,
|
|
asin:Math.asin,
|
|
atan:Math.atan,
|
|
atan2:F2(Math.atan2),
|
|
|
|
sqrt:Math.sqrt,
|
|
abs:abs,
|
|
logBase:F2(logBase),
|
|
min:F2(min),
|
|
max:F2(max),
|
|
clamp:F3(clamp),
|
|
compare:Utils.compare,
|
|
|
|
xor:F2(xor),
|
|
not:not,
|
|
|
|
truncate:truncate,
|
|
ceiling:Math.ceil,
|
|
floor:Math.floor,
|
|
round:Math.round,
|
|
toFloat:function(x) { return x; },
|
|
|
|
//readInt:readInt,
|
|
//readFloat:readFloat,
|
|
|
|
curry:F3(curry),
|
|
uncurry:F2(uncurry),
|
|
fst:fst,
|
|
snd:snd
|
|
};
|
|
|
|
return elm.Native.Basics = basics;
|
|
};
|