@@ -96,17 +96,29 @@ Elm.JSON = function() {
99 function lookup(key) { return function(obj) {
100 function lookup(key) { return function(obj) {
100 var k = JS.castStringToJSString(key);
101 var k = JS.castStringToJSString(key);
101 return obj[1].hasOwnProperty(k) ? Just(obj[1][k]) : Nothing ;
102 return obj[1].hasOwnProperty(k) ? Just(obj[1][k]) : Nothing ;
105+ function find(tipe,base) { return function (key) { return function(obj) {
106+ var k = JS.castStringToJSString(key);
107+ if (obj[1].hasOwnProperty(k)) {
109+ if (v[0] === tipe) { return v[1]; }
104 function lookupWithDefault(base) { return function(key) { return function(obj) {
115 function lookupWithDefault(base) { return function(key) { return function(obj) {
105 var k = JS.castStringToJSString(key);
116 var k = JS.castStringToJSString(key);
106 return obj[1].hasOwnProperty(k) ? obj[1][k] : base ;
117 return obj[1].hasOwnProperty(k) ? obj[1][k] : base ;
110 function remove(k) { return function(inObj) {
122 function remove(k) { return function(inObj) {
111 var obj = inObj[1];
123 var obj = inObj[1];
112 var outObj = {};
124 var outObj = {};
@@ -192,6 +204,9 @@ Elm.JSON = function() {
192 singleton : singleton,
204 singleton : singleton,
193 insert : insert,
205 insert : insert,
194 lookup : lookup,
206 lookup : lookup,
207+ findString : find("JsonString",["Nil"]),
208+ findObject : find("JsonObject", empty ),
209+ findArray : find("JsonArray" ,["Nil"]),
195 findWithDefault : lookupWithDefault,
210 findWithDefault : lookupWithDefault,
196 remove : remove,
211 remove : remove,
197 toPrettyJSString : toPrettyJSString,
212 toPrettyJSString : toPrettyJSString,
@@ -264,7 +279,11 @@ var Value = function(){
264 arr[i] = spaces.join('');
279 arr[i] = spaces.join('');
267− return arr.join('');
282+ arr = arr.join('');
283+ if (arr[arr.length-1] === " ") {
284+ return arr.slice(0,-1) + ' ';
270 function properEscape(str) {
289 function properEscape(str) {
@@ -400,7 +419,7 @@ var Value = function(){
400 } else if (v[0] === "Nil") {
419 } else if (v[0] === "Nil") {
401 return "[]";
420 return "[]";
402 } else if (v[0] === "JSON") {
421 } else if (v[0] === "JSON") {
403− return "(JSON.fromList " + toString(ElmJSON.toList(v)) + ")";
422+ return "(JSON.fromList " + toString(Elm.JSON.toList(v)) + ")";
404 } else if (v[0] === "RBNode" || v[0] === "RBEmpty") {
423 } else if (v[0] === "RBNode" || v[0] === "RBEmpty") {
405 function cons(k){ return function(v) { return function(acc) { return ["Cons",["Tuple2",k,v],acc]; }; }; }
424 function cons(k){ return function(v) { return function(acc) { return ["Cons",["Tuple2",k,v],acc]; }; }; }
406 return "(Map.fromList " + toString(Elm.Dict.fold(cons)(["Nil"])(v)) + ")";
425 return "(Map.fromList " + toString(Elm.Dict.fold(cons)(["Nil"])(v)) + ")";
@@ -1035,26 +1054,6 @@ Elm.Dict=function(){
1035 throw "Non-exhaustive pattern match in case";}();
1054 throw "Non-exhaustive pattern match in case";}();
1037 throw "Non-exhaustive pattern match in case";}();};};};
1056 throw "Non-exhaustive pattern match in case";}();};};};
1038− function find_9(k_60){
1039− return function(t_61){
1043− return raise_5(Value.str("Key was not found in dictionary!"));
1046− var case6=compare(k_60)(t_61[2]);
1051− return find_9(k_60)(t_61[5]);
1053− return find_9(k_60)(t_61[4]);
1055− throw "Non-exhaustive pattern match in case";}();
1057− throw "Non-exhaustive pattern match in case";}();};};
1058 function member_10(k_66){
1057 function member_10(k_66){
1059 return function(t_67){
1058 return function(t_67){
1060 return isJust(lookup_7(k_66)(t_67));};};
1059 return isJust(lookup_7(k_66)(t_67));};};
@@ -1456,7 +1455,7 @@ Elm.Dict=function(){
1456 return ["Cons",["Tuple2",k_232,v_233],acc_234];};};})(["Nil"])(t_231);};
1455 return ["Cons",["Tuple2",k_232,v_233],acc_234];};};})(["Nil"])(t_231);};
1457 function fromList_42(assocs_235){
1456 function fromList_42(assocs_235){
1458 return List.foldl(uncurry(insert_20))(empty_4)(assocs_235);};
1457 return List.foldl(uncurry(insert_20))(empty_4)(assocs_235);};
1459− return {empty:empty_4,lookup:lookup_7,findWithDefault:findWithDefault_8,find:find_9,member:member_10,insert:insert_20,singleton:singleton_21,remove:remove_32,map:map_33,foldl:foldl_34,foldr:foldr_35,union:union_36,intersect:intersect_37,diff:diff_38,keys:keys_39,values:values_40,toList:toList_41,fromList:fromList_42};}();
1458+ return {empty:empty_4,lookup:lookup_7,findWithDefault:findWithDefault_8,member:member_10,insert:insert_20,singleton:singleton_21,remove:remove_32,map:map_33,foldl:foldl_34,foldr:foldr_35,union:union_36,intersect:intersect_37,diff:diff_38,keys:keys_39,values:values_40,toList:toList_41,fromList:fromList_42};}();
1460Elm.main=function(){
1459Elm.main=function(){
1461 return Elm.Dict.main;};
1460 return Elm.Dict.main;};
1462} catch (e) {Elm.main=function() {var msg = ('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>' + '<br/><span style="color:grey">Runtime Error in Dict module:<br/>' + e + '</span>');document.body.innerHTML = Text.monospace(msg);throw e;};}
1461} catch (e) {Elm.main=function() {var msg = ('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>' + '<br/><span style="color:grey">Runtime Error in Dict module:<br/>' + e + '</span>');document.body.innerHTML = Text.monospace(msg);throw e;};}
@@ -3379,6 +3378,42 @@ Elm.Prelude = function() {
3381 var logBase=function(b){return function(x){return Math.log(x)/Math.log(b);};};
3380 var logBase=function(b){return function(x){return Math.log(x)/Math.log(b);};};
3382+ function readInt(str) {
3383+ var s = JavaScript.castStringToJSString(str);
3384+ var len = s.length;
3385+ if (len === 0) { return Nothing; }
3388+ if (len === 1) { return Nothing; }
3391+ for (var i = start; i < len; ++i) {
3392+ if (!Char.isDigit(s[i])) { return Nothing; }
3394+ return Just(parseInt(s));
3397+ function readFloat(str) {
3398+ var s = JavaScript.castStringToJSString(str);
3399+ var len = s.length;
3400+ if (len === 0) { return Nothing; }
3403+ if (len === 1) { return Nothing; }
3407+ for (var i = start; i < len; ++i) {
3408+ if (Char.isDigit(s[i])) { continue; }
3409+ if (s[i] === '.') {
3411+ if (dotCount <= 1) { continue; }
3415+ return Just(parseFloat(s));
3383 return {eq : Value.eq,
3418 return {eq : Value.eq,
3384 id : function(x) { return x; },
3419 id : function(x) { return x; },
@@ -3398,6 +3433,8 @@ Elm.Prelude = function() {
3398 floor : function(n) { return Math.floor(n); },
3433 floor : function(n) { return Math.floor(n); },
3399 ceiling : function(n) { return Math.ceil(n); },
3434 ceiling : function(n) { return Math.ceil(n); },
3400 truncate : function(n) { return ~~n; },
3435 truncate : function(n) { return ~~n; },
3437+ readFloat : readFloat,
3401 sqrt : Math.sqrt,
3438 sqrt : Math.sqrt,
3402 abs : Math.abs,
3439 abs : Math.abs,
3403 pi : Math.PI,
3440 pi : Math.PI,