on master help sign in
Merge branch 'master' of git://github.com/evancz/Elm
commit258519a999302721b2506c27b627bc458617d410 authorDobes Vandermeer <dobesv@gmail.com> dateTue 29 Jan 2013, 12:45 (14 years ago) parent99264a53d1363c
4 files changed+18−22
core-js/Value.js+2−2 core-js/foreign/JSON.js+3−3 core-js/runtime/Dispatcher.js+2−2 elm/src/Gen/CompileToJS.hs+11−15
core-js/Value.js+2−2
@@ -3,7 +3,7 @@ var Value = function(){
33
44 var eq = function(x,y) {
55 if (typeof x === "object") {
6− if (x.hasOwnProperty('_')) {
6+ if ('_' in x) {
77 for (var i in x) { if (x[i] != y[i]) return false; }
88 for (var i in y) { if (x[i] != y[i]) return false; }
99 return true;
@@ -172,7 +172,7 @@ var Value = function(){
172172 return v+"";
173173 } else if (typeof v === "string" && v.length < 2) {
174174 return "'"+v+"'";
175− } else if (typeof v === "object" && v.hasOwnProperty('_')) {
175+ } else if (typeof v === "object" && ('_' in v)) {
176176 var output = []
177177 for (var k in v) {
178178 if (k == '_') continue;
core-js/foreign/JSON.js+3−3
@@ -23,12 +23,12 @@ Elm.JSON = function() {
2323
2424 function lookup(key) { return function(obj) {
2525 var k = JS.castStringToJSString(key);
26− return obj[1].hasOwnProperty(k) ? ["Just", obj[1][k]] : ["Nothing"] ;
26+ return (k in obj[1]) ? ["Just", obj[1][k]] : ["Nothing"] ;
2727 };
2828 }
2929 function find(tipe,base) { return function (key) { return function(obj) {
3030 var k = JS.castStringToJSString(key);
31− if (obj[1].hasOwnProperty(k)) {
31+ if (k in obj[1]) {
3232 var v = obj[1][k];
3333 if (v[0] === tipe) { return v[1]; }
3434 }
@@ -38,7 +38,7 @@ Elm.JSON = function() {
3838 }
3939 function lookupWithDefault(base) { return function(key) { return function(obj) {
4040 var k = JS.castStringToJSString(key);
41− return obj[1].hasOwnProperty(k) ? obj[1][k] : base ;
41+ return (k in obj[1]) ? obj[1][k] : base ;
4242 };
4343 };
4444 }
core-js/runtime/Dispatcher.js+2−2
@@ -6,7 +6,7 @@ var Dispatcher = function() {
66
77 var initialize = function() {
88 program = Elm.main();
9− if (!program.hasOwnProperty('recv')) {
9+ if (!('recv' in program)) {
1010 program = Elm.Signal.constant(program);
1111 }
1212
@@ -36,7 +36,7 @@ var Dispatcher = function() {
3636 };
3737
3838 function isAlive(input) {
39− if (!input.hasOwnProperty('defaultNumberOfKids')) return true;
39+ if (!('defaultNumberOfKids' in input)) return true;
4040 var len = input.kids.length;
4141 if (len == 0) return false;
4242 if (len > input.defaultNumberOfKids) return true;
elm/src/Gen/CompileToJS.hs+11−15
@@ -175,26 +175,22 @@ toJS' (C txt span expr) =
175175 Case e cases -> caseToJS span e cases
176176 _ -> toJS expr
177177
178−recordToJS e loop cmds =
178+recordToJS e cmds =
179179 do e' <- toJS' e
180− return $ jsFunc "" (concat [ assign "r" "{_:[true]}"
181− , assign "e" e'
182− , "\nfor(var i in e){", loop, "}"
180+ return $ jsFunc "" (concat [ assign "r" ("Object.create" ++ parens e')
183181 , cmds
184182 , ret "r" ]) ++ "()"
185183
186−remove x = concat [ "\n if (i!='", x, "') { r[i]=e[i]; }"
187− , "\n else if (e[i].length>1) { r[i]=e[i].slice(1); }" ]
188184addField (x,e) = ((++add) . assign "v") `liftM` toJS' e
189− where add = concat [ "\nif (r.hasOwnProperty('", x, "')) {"
190− , "\n r.", x, " = r.", x, ".slice(0);"
191− , "\n r.", x, ".unshift(v);"
185+ where add = concat [ "\nif ('", x, "' in r) {"
186+ , "\n r.", x, " = [v].concat(r.", x, ");"
192187 , "\n} else { r.", x, " = [v]; }" ]
193188setField (x,e) = do
194− set <- globalAssign ("r." ++ x ++ "[0]") `liftM` toJS' e
195− return (globalAssign ("r." ++ x) ("r." ++ x ++ ".slice(0)") ++ set)
189+ let rx = "r." ++ x
190+ set <- globalAssign (rx ++ "[0]") `liftM` toJS' e
191+ return (globalAssign rx (rx ++ ".slice(0)") ++ set)
196192access x e = jsFunc "r" (ret body) ++ parens e
197− where body = "r.hasOwnProperty('_') ? r." ++ x ++ "[0] : r." ++ x
193+ where body = "'_' in r ? r." ++ x ++ "[0] : r." ++ x
198194makeRecord kvs = do
199195 kvs' <- (Map.toList . foldl' combine Map.empty) `liftM` mapM prep kvs
200196 let fs = map (\(k,vs) -> k ++ " : " ++ jsList vs) kvs' ++ ["_ : [true]"]
@@ -216,9 +212,9 @@ instance ToJS Expr where
216212 Boolean b -> return $ if b then "true" else "false"
217213 Range lo hi -> jsRange `liftM` toJS' lo `ap` toJS' hi
218214 Access e x -> access x `liftM` toJS' e
219− Remove e x -> recordToJS e (remove x) ""
220− Insert e x v -> recordToJS e "r[i]=e[i];" =<< addField (x,v)
221− Modify e fs -> recordToJS e "r[i]=e[i];" . concat =<< mapM setField fs
215+ Remove e x -> recordToJS e ("\ndelete r." ++ x ++ ";")
216+ Insert e x v -> recordToJS e =<< addField (x,v)
217+ Modify e fs -> recordToJS e . concat =<< mapM setField fs
222218 Record fs -> makeRecord fs
223219 Binop op e1 e2 -> binop op `liftM` toJS' e1 `ap` toJS' e2
224220