on master help sign in
Add special finds to JSON.
84e8d80evancz
core-js/foreign/JSON.js+15
@@ -21,17 +21,29 @@ Elm.JSON = function() {
21 };
21 };
22 };
22 };
23 }
23 }
24+
24 function lookup(key) { return function(obj) {
25 function lookup(key) { return function(obj) {
25 var k = JS.castStringToJSString(key);
26 var k = JS.castStringToJSString(key);
26 return obj[1].hasOwnProperty(k) ? Just(obj[1][k]) : Nothing ;
27 return obj[1].hasOwnProperty(k) ? Just(obj[1][k]) : Nothing ;
27 };
28 };
28 }
29 }
30+ function find(tipe,base) { return function (key) { return function(obj) {
31+ var k = JS.castStringToJSString(key);
32+ if (obj[1].hasOwnProperty(k)) {
33+ var v = obj[1][k];
34+ if (v[0] === tipe) { return v[1]; }
35+ }
36+ return base;
37+ };
38+ }
39+ }
29 function lookupWithDefault(base) { return function(key) { return function(obj) {
40 function lookupWithDefault(base) { return function(key) { return function(obj) {
30 var k = JS.castStringToJSString(key);
41 var k = JS.castStringToJSString(key);
31 return obj[1].hasOwnProperty(k) ? obj[1][k] : base ;
42 return obj[1].hasOwnProperty(k) ? obj[1][k] : base ;
32 };
43 };
33 };
44 };
34 }
45 }
46+
35 function remove(k) { return function(inObj) {
47 function remove(k) { return function(inObj) {
36 var obj = inObj[1];
48 var obj = inObj[1];
37 var outObj = {};
49 var outObj = {};
@@ -117,6 +129,9 @@ Elm.JSON = function() {
117 singleton : singleton,
129 singleton : singleton,
118 insert : insert,
130 insert : insert,
119 lookup : lookup,
131 lookup : lookup,
132+ findString : find("JsonString",["Nil"]),
133+ findObject : find("JsonObject", empty ),
134+ findArray : find("JsonArray" ,["Nil"]),
120 findWithDefault : lookupWithDefault,
135 findWithDefault : lookupWithDefault,
121 remove : remove,
136 remove : remove,
122 toPrettyJSString : toPrettyJSString,
137 toPrettyJSString : toPrettyJSString,