2Elm.Native.Show.make = function(elm) {
3 elm.Native = elm.Native || {};
4 elm.Native.Show = elm.Native.Show || {};
5 if (elm.Native.Show.values) return elm.Native.Show.values;
7 var NList = Elm.Native.List.make(elm);
8 var Array = Elm.Array.make(elm);
9 var List = Elm.List.make(elm);
10 var Dict = Elm.Dict.make(elm);
11 var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
13 var toString = function(v) {
15 if (type === "function") {
16 var name = v.func ? v.func.name : v.name;
17 return '<function' + (name === '' ? '' : ': ') + name + '>';
18 } else if (type === "boolean") {
19 return v ? "True" : "False";
20 } else if (type === "number") {
22 } else if ((v instanceof String) && v.isChar) {
23 return "'" + addSlashes(v) + "'";
24 } else if (type === "string") {
25 return '"' + addSlashes(v) + '"';
26 } else if (type === "object" && '_' in v && probablyPublic(v)) {
29 for (var i = v._[k].length; i--; ) {
30 output.push(k + " = " + toString(v._[k][i]));
34 if (k === '_') continue;
35 output.push(k + " = " + toString(v[k]));
37 if (output.length === 0) return "{}";
38 return "{ " + output.join(", ") + " }";
39 } else if (type === "object" && 'ctor' in v) {
40 if (v.ctor.substring(0,6) === "_Tuple") {
43 if (k === 'ctor') continue;
44 output.push(toString(v[k]));
46 return "(" + output.join(",") + ")";
47 } else if (v.ctor === "_Array") {
48 var list = Array.toList(v);
49 return "Array.fromList " + toString(list);
50 } else if (v.ctor === "::") {
51 var output = '[' + toString(v._0);
53 while (v.ctor === "::") {
54 output += "," + toString(v._0);
58 } else if (v.ctor === "[]") {
60 } else if (v.ctor === "RBNode" || v.ctor === "RBEmpty") {
61 var cons = F3(function(k,v,acc){return NList.Cons(Tuple2(k,v),acc)});
62 var list = A3(Dict.foldr, cons, NList.Nil, v);
64 if (list.ctor === "::" && list._0._1.ctor === "_Tuple0") {
66 list = A2(List.map, function(x){return x._0}, list);
68 return name + ".fromList " + toString(list);
72 if (i === 'ctor') continue;
73 var str = toString(v[i]);
74 var parenless = str[0] === '{' || str[0] === '<' || str.indexOf(' ') < 0;
75 output += ' ' + (parenless ? str : '(' + str + ')');
77 return v.ctor + output;
80 if (type === 'object' && 'recv' in v) return '<signal>';
81 return "<internal structure>";
84 function addSlashes(str) {
85 return str.replace(/\\/g, '\\\\')
86 .replace(/\n/g, '\\n')
87 .replace(/\t/g, '\\t')
88 .replace(/\r/g, '\\r')
89 .replace(/\v/g, '\\v')
90 .replace(/\0/g, '\\0')
91 .replace(/\'/g, "\\'")
92 .replace(/\"/g, '\\"');
95 function probablyPublic(v) {
96 var keys = Object.keys(v);
97 var len = keys.length;
100 && 'element' in v) return false;
105 && 'y' in v) return false;
112 && 'form' in v) return false;
116 return elm.Native.Show.values = { show:toString };
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list