2var JSjson = window.JSON;
4 var JS = Elm.JavaScript;
5 var empty = ['JSON',{}];
6 function singleton(k) { return function(v) {
8 obj[JS.castStringToJSString(k)] = v;
12 function insert(k) { return function(v) { return function(inObj) {
18 outObj[JS.castStringToJSString(k)] = v;
19 return ['JSON', outObj ];
24 function lookup(key) { return function(obj) {
25 var k = JS.castStringToJSString(key);
26 return obj[1].hasOwnProperty(k) ? ["Just", obj[1][k]] : ["Nothing"] ;
29 function find(tipe,base) { return function (key) { return function(obj) {
30 var k = JS.castStringToJSString(key);
31 if (obj[1].hasOwnProperty(k)) {
33 if (v[0] === tipe) { return v[1]; }
39 function lookupWithDefault(base) { return function(key) { return function(obj) {
40 var k = JS.castStringToJSString(key);
41 return obj[1].hasOwnProperty(k) ? obj[1][k] : base ;
46 function remove(k) { return function(inObj) {
52 delete outObj[JS.castStringToJSString(k)];
53 return ['JSON', outObj];
57 function JsonString(v) { return [ "JsonString", v ]; }
58 function JsonNumber(v) { return [ "JsonNumber", v ]; }
59 function JsonBool(v) { return [ "JsonBool", v ]; }
60 var JsonNull = [ "JsonNull" ];
61 function JsonArray(v) { return [ "JsonArray", v ]; }
62 function JsonObject(v) { return [ "JsonObject", v ]; }
64 function toList(json) {
68 arr.push(Value.Tuple(JS.castJSStringToString(i), obj[i]));
70 return JS.castJSArrayToList(arr);
72 function fromList(list) {
73 var arr = JS.castListToJSArray(list);
75 for (var i = arr.length; i--; ) {
76 obj[JS.castStringToJSString(arr[i][1])] = arr[i][2];
78 return [ "JSON", obj ];
81 function toPrettyJSString(sep) { return function (obj) {
82 function fromValue(v) {
84 case 'JsonNull' : return null;
85 case 'JsonString' : return JS.castStringToJSString(v[1]);
90 o[i] = fromValue(from[i]);
94 var a = JS.castListToJSArray(v[1]);
95 for (var i = a.length; i--; ) {
96 a[i] = fromValue(a[i]);
103 return JSjson.stringify(fromValue([ 'JsonObject', obj ]), null, JS.castStringToJSString(sep));
106 function fromJSString(str) {
107 var obj = JSjson.parse(str);
108 function toValue(v) {
110 case 'string' : return [ "JsonString", JS.castJSStringToString(v) ];
111 case 'number' : return [ "JsonNumber", JS.castJSNumberToFloat(v) ];
112 case 'boolean' : return [ "JsonBool", JS.castJSBoolToBool(v) ];
114 if (v === null) return [ "JsonNull" ];
116 v[i] = toValue(v[i]);
118 if (v instanceof Array) return [ "JsonArray", JS.castJSArrayToList(v) ];
119 return [ "JsonObject", [ "JSON", v ] ];
123 obj[i] = toValue(obj[i]);
127 return {empty : empty,
128 singleton : singleton,
131 findString : find("JsonString",["Nil"]),
132 findObject : find("JsonObject", empty ),
133 findArray : find("JsonArray" ,["Nil"]),
134 findWithDefault : lookupWithDefault,
136 toPrettyJSString : toPrettyJSString,
137 toJSString : toPrettyJSString(''),
138 fromJSString : fromJSString,
139 toPrettyString : function(sep) { return function(v) {
140 return JS.castJSStringToString(toPrettyJSString(sep)(v)); }; },
141 toString : function(v) { return JS.castJSStringToString(toPrettyJSString('')(v)); },
142 fromString : function(v) { return fromJSString(JS.castStringToJSString(v)); },
145 JsonString : JsonString,
146 JsonNumber : JsonNumber,
149 JsonArray : JsonArray,
150 JsonObject : JsonObject
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