on master help sign in
Strip out the unrelated things from Misc.js and rename it to Show.js, which is all it does now anyway!
34294a5evancz
libraries/Native/Misc.jsdeleted−194
@@ -1,194 +0,0 @@
1−
2−Elm.Native.Misc = function(elm) {
3− 'use strict';
4−
5− elm.node.addEventListener('elm_log', function(e) { console.log(e.value); });
6− elm.node.addEventListener('elm_title', function(e) {document.title = e.value;});
7− elm.node.addEventListener('elm_redirect', function(e) {
8− if (e.value.length > 0) { window.location = e.value; }
9− });
10− elm.node.addEventListener('elm_viewport', function(e) {
11− var node = document.getElementById('elm_viewport');
12− if (!node) {
13− node = document.createElement('meta');
14− node.id = 'elm_viewport';
15− node.name = 'viewport';
16− document.head.appendChild(node);
17− }
18− node.content = e.value;
19− Dispatcher.notify(elm.Window.dimensions.id,
20− Tuple2(window.innerWidth, window.innerHeight));
21− });
22−
23− var NativeList = Elm.Native.List(elm);
24− var List = Elm.List(elm);
25− var Maybe = Elm.Maybe(elm);
26− var JS = Elm.JavaScript(elm);
27− var Dict = Elm.Dict(elm);
28− var Json = Elm.Json(elm);
29−
30− function getTextSize(w,h,txt) {
31− var t = document.createElement('div');
32− t.innerHTML = txt;
33− t.style.textAlign = 'left';
34− if (w > 0) { t.style.width = w + "px"; }
35−
36− t.style.visibility = "hidden";
37− t.style.styleFloat = "left";
38− t.style.cssFloat = "left";
39−
40− document.body.appendChild(t);
41− var cStyle = window.getComputedStyle(t,null);
42− var realW = cStyle.getPropertyValue("width").slice(0,-2) - 0;
43− var realH = cStyle.getPropertyValue("height").slice(0,-2) - 0;
44− document.body.removeChild(t);
45− //delete t;
46− return [Math.ceil(realW),Math.ceil(Math.max(h,realH))];
47− }
48−
49− function getSize(e) {
50− var t = e.cloneNode(true);
51−
52− t.style.visibility = "hidden";
53− t.style.styleFloat = "left";
54− t.style.cssFloat = "left";
55−
56− document.body.appendChild(t);
57− var w = t.offsetWidth;
58− var h = t.offsetHeight;
59− document.body.removeChild(t);
60− //delete t;
61− return [w,h];
62− }
63−
64− function getExcess(e) {
65− var t = e.cloneNode(true);
66−
67− t.style.visibility = "hidden";
68− t.style.styleFloat = "left";
69− t.style.cssFloat = "left";
70−
71− document.body.appendChild(t);
72− var ow = t.offsetWidth;
73− var oh = t.offsetHeight;
74− var cStyle = window.getComputedStyle(t,null);
75− var w = cStyle.getPropertyValue("width").slice(0,-2) - 0;
76− var h = cStyle.getPropertyValue("height").slice(0,-2) - 0;
77− document.body.removeChild(t);
78− //delete t;
79− return [ow-w,oh-h];
80− }
81−
82−
83− function groupForms(forms) {
84− forms = JS.fromList(forms);
85− var groups = [];
86− var arr = [];
87− for (var i = forms.length; i--; ) {
88− var f = forms[i];
89− switch(f._3.ctor) {
90− case "FElement":
91− if (arr.length > 0) {
92− groups.push(arr);
93− arr = [];
94− }
95− groups.push(f);
96− break;
97− default:
98− arr.push(f);
99− }
100− }
101− if (arr.length > 0) groups.push(arr);
102− return groups;
103− }
104−
105− var toString = function(v) {
106− if (typeof v === "function") {
107− return "<function>";
108− } else if (typeof v === "boolean") {
109− return v ? "True" : "False";
110− } else if (typeof v === "number") {
111− return v+"";
112− } else if (typeof v === "string" && v.length < 2) {
113− return "'"+v+"'";
114− } else if (typeof v === "object" && ('_' in v)) {
115− var output = [];
116− for (var k in v._) {
117− console.log(k,v._[k]);
118− for (var i = v._[k].length; i--; ) {
119− output.push(k + " = " + toString(v._[k][i]));
120− }
121− }
122− for (var k in v) {
123− if (k === '_') continue;
124− output.push(k + " = " + toString(v[k]));
125− }
126− if (output.length === 0) return "{}";
127− return "{ " + output.join(", ") + " }";
128− } else if ('ctor' in v) {
129− if (v.ctor.substring(0,5) === "Tuple") {
130− var output = new Array(v.length-1);
131− for (var i = v.length; --i; ) { output[i-1] = toString(v[i]); }
132− return "(" + output.join(",") + ")";
133− } else if (v.ctor === "Cons") {
134− var isStr = typeof v._0 === "string";
135− var start = isStr ? '"' : "[";
136− var end = isStr ? '"' : "]";
137− var sep = isStr ? "" : ",";
138− var f = isStr ? function(x){return x} : toString;
139− var output = start + f(v._0);
140− v = v._1;
141− while (v.ctor === "Cons") {
142− output += sep + f(v._0);
143− v = v._1;
144− }
145− return output + end;
146− } else if (v.ctor === "Nil") {
147− return "[]";
148− } else if (v.ctor === "JSON") {
149− return "(JSON.fromList " + toString(Json.toList(v)) + ")";
150− } else if (v.ctor === "RBNode" || v.ctor === "RBEmpty") {
151− function cons(k){ return function(v) { return function(acc) { return NativeList.Cons(Tuple2(k,v),acc); }; }; }
152− var list = Dict.foldr(cons)(NativeList.Nil)(v);
153− var name = "Dict";
154− if (list.ctor === "Cons" && list._0._1.ctor === "Tuple0") {
155− name = "Set";
156− list = A2(List.map, function(x){return x._0}, list);
157− }
158− return "(" + name + ".fromList " + toString(list) + ")";
159− } else {
160− var output = "";
161− for (var i = v.length; --i; ) { output = ' ' + toString(v[i]) + output; }
162− output = v.ctor + output;
163− return (v.length > 1) ? "(" + output + ")" : output;
164− }
165− }
166− return v+"";
167− };
168− var show = function(v) { return NativeList.fromArray(toString(v)); };
169−
170− var addListener = function() {
171− if(document.addEventListener) {
172− return function(element, event, handler) {
173− element.addEventListener(event, handler, false);
174− };
175− } else {
176− return function(element, event, handler) {
177− element.attachEvent('on' + event, handler);
178− };
179− }
180− }();
181−
182− return elm.Native.Misc = {
183− eq:eq,
184− show:show,
185− Tuple0:Tuple0,
186− Tuple2:Tuple2,
187− toText : toText,
188− getTextSize : getTextSize,
189− getSize : getSize,
190− getExcess : getExcess,
191− groupForms : groupForms,
192− addListener : addListener
193− };
194−};
libraries/Native/Show.jsnew file+96
@@ -0,0 +1,96 @@
1+
2+Elm.Native.Show = function(elm) {
3+ 'use strict';
4+
5+ if (elm.Native.Show) return elm.Native.Show;
6+
7+ var NList = Elm.Native.List(elm);
8+ var List = Elm.List(elm);
9+ var Maybe = Elm.Maybe(elm);
10+ var JS = Elm.JavaScript(elm);
11+ var Dict = Elm.Dict(elm);
12+ var Json = Elm.Json(elm);
13+
14+ elm.node.addEventListener('log', function(e) { console.log(e.value); });
15+ elm.node.addEventListener('title', function(e) {document.title = e.value;});
16+ elm.node.addEventListener('redirect', function(e) {
17+ if (e.value.length > 0) { window.location = e.value; }
18+ });
19+ elm.node.addEventListener('viewport', function(e) {
20+ var node = document.getElementById('elm_viewport');
21+ if (!node) {
22+ node = document.createElement('meta');
23+ node.id = 'elm_viewport';
24+ node.name = 'viewport';
25+ document.head.appendChild(node);
26+ }
27+ node.content = e.value;
28+ Dispatcher.notify(elm.Window.dimensions.id,
29+ Tuple2(elm.node.clientWidth, elm.node.clientHeight));
30+ });
31+
32+ var toString = function(v) {
33+ if (typeof v === "function") {
34+ return "<function>";
35+ } else if (typeof v === "boolean") {
36+ return v ? "True" : "False";
37+ } else if (typeof v === "number") {
38+ return v+"";
39+ } else if (typeof v === "string" && v.length < 2) {
40+ return "'"+v+"'";
41+ } else if (typeof v === "object" && ('_' in v)) {
42+ var output = [];
43+ for (var k in v._) {
44+ console.log(k,v._[k]);
45+ for (var i = v._[k].length; i--; ) {
46+ output.push(k + " = " + toString(v._[k][i]));
47+ }
48+ }
49+ for (var k in v) {
50+ if (k === '_') continue;
51+ output.push(k + " = " + toString(v[k]));
52+ }
53+ if (output.length === 0) return "{}";
54+ return "{ " + output.join(", ") + " }";
55+ } else if ('ctor' in v) {
56+ if (v.ctor.substring(0,5) === "Tuple") {
57+ var output = new Array(v.length-1);
58+ for (var i = v.length; --i; ) { output[i-1] = toString(v[i]); }
59+ return "(" + output.join(",") + ")";
60+ } else if (v.ctor === "Cons") {
61+ var isStr = typeof v._0 === "string";
62+ var start = isStr ? '"' : "[";
63+ var end = isStr ? '"' : "]";
64+ var sep = isStr ? "" : ",";
65+ var f = isStr ? function(x){return x} : toString;
66+ var output = start + f(v._0);
67+ v = v._1;
68+ while (v.ctor === "Cons") {
69+ output += sep + f(v._0);
70+ v = v._1;
71+ }
72+ return output + end;
73+ } else if (v.ctor === "Nil") {
74+ return "[]";
75+ } else if (v.ctor === "RBNode" || v.ctor === "RBEmpty") {
76+ function cons(k){ return function(v) { return function(acc) { return NList.Cons(Tuple2(k,v),acc); }; }; }
77+ var list = Dict.foldr(cons)(NList.Nil)(v);
78+ var name = "Dict";
79+ if (list.ctor === "Cons" && list._0._1.ctor === "Tuple0") {
80+ name = "Set";
81+ list = A2(List.map, function(x){return x._0}, list);
82+ }
83+ return "(" + name + ".fromList " + toString(list) + ")";
84+ } else {
85+ var output = "";
86+ for (var i = v.length; --i; ) { output = ' ' + toString(v[i]) + output; }
87+ output = v.ctor + output;
88+ return (v.length > 1) ? "(" + output + ")" : output;
89+ }
90+ }
91+ return v+"";
92+ };
93+ function show(v) { return NList.fromArray(toString(v)); }
94+
95+ return elm.Native.Show = { show:show };
96+};