2Elm.Native.Show = function(elm) {
5 elm.Native = elm.Native || {};
6 if (elm.Native.Show) return elm.Native.Show;
8 var NList = Elm.Native.List(elm);
9 var List = Elm.List(elm);
10 var Maybe = Elm.Maybe(elm);
11 var JS = Elm.JavaScript(elm);
12 var Dict = Elm.Dict(elm);
13 var Json = Elm.Json(elm);
14 var Tuple2 = Elm.Native.Utils(elm).Tuple2;
16 var toString = function(v) {
18 if (type === "function") {
19 var name = v.func ? v.func.name : v.name;
20 return '<function' + (name === '' ? '' : ': ') + name + '>';
21 } else if (type === "boolean") {
22 return v ? "True" : "False";
23 } else if (type === "number") {
25 } else if (type === "string" && v.length < 2) {
26 return "'" + showChar(v) + "'";
27 } else if (type === "object" && '_' in v) {
30 for (var i = v._[k].length; i--; ) {
31 output.push(k + " = " + toString(v._[k][i]));
35 if (k === '_') continue;
36 output.push(k + " = " + toString(v[k]));
38 if (output.length === 0) return "{}";
39 return "{ " + output.join(", ") + " }";
40 } else if (type === "object" && 'ctor' in v) {
41 if (v.ctor.substring(0,6) === "_Tuple") {
44 if (k === 'ctor') continue;
45 output.push(toString(v[k]));
47 return "(" + output.join(",") + ")";
48 } else if (v.ctor === "::") {
49 var isStr = typeof v._0 === "string",
50 start = isStr ? '"' : "[",
51 end = isStr ? '"' : "]",
52 sep = isStr ? "" : ",",
53 f = !isStr ? toString : showChar;
54 var output = start + f(v._0);
56 while (v.ctor === "::") {
57 output += sep + f(v._0);
61 } else if (v.ctor === "[]") {
63 } else if (v.ctor === "RBNode" || v.ctor === "RBEmpty") {
64 var cons = F3(function(k,v,acc){return NList.Cons(Tuple2(k,v),acc)});
65 var list = A3(Dict.foldr, cons, NList.Nil, v);
67 if (list.ctor === "::" && list._0._1.ctor === "_Tuple0") {
69 list = A2(List.map, function(x){return x._0}, list);
71 return name + ".fromList " + toString(list);
75 if (i === 'ctor') continue;
76 var str = toString(v[i]);
77 var parenless = str[0] === '{' || str[0] === '<' || str.indexOf(' ') < 0;
78 output += ' ' + (parenless ? str : '(' + str + ')');
80 return v.ctor + output;
83 if (type === 'object' && 'recv' in v) return '<signal>';
84 return "<internal structure>";
86 function show(v) { return NList.fromArray(toString(v)); }
88 function showChar (c) {
89 return c === '\n' ? '\\n' :
97 c === '\\' ? '\\\\' : c;
100 return elm.Native.Show = { show:show };
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