on efb30dd help sign in
elk/libraries/Native/Basics.js
110 lines 2.8 kB history raw
2Elm.Native.Basics = {};
3Elm.Native.Basics.make = function(elm) {
4 elm.Native = elm.Native || {};
5 elm.Native.Basics = elm.Native.Basics || {};
6 if (elm.Native.Basics.values) return elm.Native.Basics.values;
8 var JS = Elm.Native.JavaScript.make(elm);
9 // var Maybe = Elm.Maybe(elm);
10 var Utils = Elm.Native.Utils.make(elm);
11 //var Char = Elm.Char(elm);
13 function div(a,b) { return (a/b)|0; }
14 function rem(a,b) { return a % b; }
15 var mod = Utils.mod;
16 function abs(x) { return x < 0 ? -x : x; }
17 function logBase(base,n) { return Math.log(n) / Math.log(base); }
18 function min(a,b) { return Utils.cmp(a,b) < 0 ? a : b; }
19 function max(a,b) { return Utils.cmp(a,b) > 0 ? a : b; }
20 function clamp(lo,hi,n) {
21 return Utils.cmp(n,lo) < 0 ? lo : Utils.cmp(n,hi) > 0 ? hi : n; }
22 function xor(a,b) { return a !== b; }
23 function not(b) { return !b; }
25 function truncate(n) { return n|0; }
27 function curry(f,a,b) { return f(Utils.Tuple2(a,b)); }
28 function uncurry(f,v) { return A2(f,v._0,v._1); }
29 function fst(t) { return t._0; }
30 function snd(t) { return t._1; }
31/*
32 function readInt(str) {
33 var s = JS.fromString(str);
34 var len = s.length;
35 if (len === 0) { return Maybe.Nothing; }
36 var start = 0;
37 if (s[0] == '-') {
38 if (len === 1) { return Maybe.Nothing; }
39 start = 1;
40 }
41 for (var i = start; i < len; ++i) {
42 if (!Char.isDigit(s[i])) { return Maybe.Nothing; }
43 }
44 return Maybe.Just(parseInt(s, 10));
45 }
47 function readFloat(str) {
48 var s = JS.fromString(str);
49 var len = s.length;
50 if (len === 0) { return Maybe.Nothing; }
51 var start = 0;
52 if (s[0] == '-') {
53 if (len === 1) { return Maybe.Nothing; }
54 start = 1;
55 }
56 var dotCount = 0;
57 for (var i = start; i < len; ++i) {
58 if (Char.isDigit(s[i])) { continue; }
59 if (s[i] === '.') {
60 dotCount += 1;
61 if (dotCount <= 1) { continue; }
62 }
63 return Maybe.Nothing;
64 }
65 return Maybe.Just(parseFloat(s));
66 }
67*/
68 var basics = {
69 div:F2(div),
70 rem:F2(rem),
71 mod:mod,
73 pi:Math.PI,
74 e:Math.e,
75 cos:Math.cos,
76 sin:Math.sin,
77 tan:Math.tan,
78 acos:Math.acos,
79 asin:Math.asin,
80 atan:Math.atan,
81 atan2:F2(Math.atan2),
83 sqrt:Math.sqrt,
84 abs:abs,
85 logBase:F2(logBase),
86 min:F2(min),
87 max:F2(max),
88 clamp:F3(clamp),
89 compare:Utils.compare,
91 xor:F2(xor),
92 not:not,
94 truncate:truncate,
95 ceiling:Math.ceil,
96 floor:Math.floor,
97 round:Math.round,
98 toFloat:function(x) { return x; },
100 //readInt:readInt,
101 //readFloat:readFloat,
103 curry:F3(curry),
104 uncurry:F2(uncurry),
105 fst:fst,
106 snd:snd
107 };
109 return elm.Native.Basics.values = basics;
110};