Add special finds to JSON.

This commit is contained in:
evancz 2012-10-21 04:54:36 -07:00
parent ce9e5d2173
commit 84e8d80631

View file

@ -21,17 +21,29 @@ Elm.JSON = function() {
};
};
}
function lookup(key) { return function(obj) {
var k = JS.castStringToJSString(key);
return obj[1].hasOwnProperty(k) ? Just(obj[1][k]) : Nothing ;
};
}
function find(tipe,base) { return function (key) { return function(obj) {
var k = JS.castStringToJSString(key);
if (obj[1].hasOwnProperty(k)) {
var v = obj[1][k];
if (v[0] === tipe) { return v[1]; }
}
return base;
};
}
}
function lookupWithDefault(base) { return function(key) { return function(obj) {
var k = JS.castStringToJSString(key);
return obj[1].hasOwnProperty(k) ? obj[1][k] : base ;
};
};
}
function remove(k) { return function(inObj) {
var obj = inObj[1];
var outObj = {};
@ -117,6 +129,9 @@ Elm.JSON = function() {
singleton : singleton,
insert : insert,
lookup : lookup,
findString : find("JsonString",["Nil"]),
findObject : find("JsonObject", empty ),
findArray : find("JsonArray" ,["Nil"]),
findWithDefault : lookupWithDefault,
remove : remove,
toPrettyJSString : toPrettyJSString,