on master help sign in
Merge branch 'master' of git://github.com/evancz/Elm
258519aDobes Vandermeer
core-js/Value.js+2−2
@@ -3,7 +3,7 @@ var Value = function(){
3
3
4 var eq = function(x,y) {
4 var eq = function(x,y) {
5 if (typeof x === "object") {
5 if (typeof x === "object") {
6− if (x.hasOwnProperty('_')) {
6+ if ('_' in x) {
7 for (var i in x) { if (x[i] != y[i]) return false; }
7 for (var i in x) { if (x[i] != y[i]) return false; }
8 for (var i in y) { if (x[i] != y[i]) return false; }
8 for (var i in y) { if (x[i] != y[i]) return false; }
9 return true;
9 return true;
@@ -172,7 +172,7 @@ var Value = function(){
172 return v+"";
172 return v+"";
173 } else if (typeof v === "string" && v.length < 2) {
173 } else if (typeof v === "string" && v.length < 2) {
174 return "'"+v+"'";
174 return "'"+v+"'";
175− } else if (typeof v === "object" && v.hasOwnProperty('_')) {
175+ } else if (typeof v === "object" && ('_' in v)) {
176 var output = []
176 var output = []
177 for (var k in v) {
177 for (var k in v) {
178 if (k == '_') continue;
178 if (k == '_') continue;
core-js/foreign/JSON.js+3−3
@@ -23,12 +23,12 @@ Elm.JSON = function() {
23
23
24 function lookup(key) { return function(obj) {
24 function lookup(key) { return function(obj) {
25 var k = JS.castStringToJSString(key);
25 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"] ;
27 };
27 };
28 }
28 }
29 function find(tipe,base) { return function (key) { return function(obj) {
29 function find(tipe,base) { return function (key) { return function(obj) {
30 var k = JS.castStringToJSString(key);
30 var k = JS.castStringToJSString(key);
31− if (obj[1].hasOwnProperty(k)) {
31+ if (k in obj[1]) {
32 var v = obj[1][k];
32 var v = obj[1][k];
33 if (v[0] === tipe) { return v[1]; }
33 if (v[0] === tipe) { return v[1]; }
34 }
34 }
@@ -38,7 +38,7 @@ Elm.JSON = function() {
38 }
38 }
39 function lookupWithDefault(base) { return function(key) { return function(obj) {
39 function lookupWithDefault(base) { return function(key) { return function(obj) {
40 var k = JS.castStringToJSString(key);
40 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 ;
42 };
42 };
43 };
43 };
44 }
44 }
core-js/runtime/Dispatcher.js+2−2
@@ -6,7 +6,7 @@ var Dispatcher = function() {
6
6
7 var initialize = function() {
7 var initialize = function() {
8 program = Elm.main();
8 program = Elm.main();
9− if (!program.hasOwnProperty('recv')) {
9+ if (!('recv' in program)) {
10 program = Elm.Signal.constant(program);
10 program = Elm.Signal.constant(program);
11 }
11 }
12
12
@@ -36,7 +36,7 @@ var Dispatcher = function() {
36 };
36 };
37
37
38 function isAlive(input) {
38 function isAlive(input) {
39− if (!input.hasOwnProperty('defaultNumberOfKids')) return true;
39+ if (!('defaultNumberOfKids' in input)) return true;
40 var len = input.kids.length;
40 var len = input.kids.length;
41 if (len == 0) return false;
41 if (len == 0) return false;
42 if (len > input.defaultNumberOfKids) return true;
42 if (len > input.defaultNumberOfKids) return true;
elm/src/Gen/CompileToJS.hs+11−15
@@ -175,26 +175,22 @@ toJS' (C txt span expr) =
175 Case e cases -> caseToJS span e cases
175 Case e cases -> caseToJS span e cases
176 _ -> toJS expr
176 _ -> toJS expr
177
177
178−recordToJS e loop cmds =
178+recordToJS e cmds =
179 do e' <- toJS' e
179 do e' <- toJS' e
180− return $ jsFunc "" (concat [ assign "r" "{_:[true]}"
180+ return $ jsFunc "" (concat [ assign "r" ("Object.create" ++ parens e')
181− , assign "e" e'
182− , "\nfor(var i in e){", loop, "}"
183 , cmds
181 , cmds
184 , ret "r" ]) ++ "()"
182 , ret "r" ]) ++ "()"
185
183
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); }" ]
188addField (x,e) = ((++add) . assign "v") `liftM` toJS' e
184addField (x,e) = ((++add) . assign "v") `liftM` toJS' e
189− where add = concat [ "\nif (r.hasOwnProperty('", x, "')) {"
185+ where add = concat [ "\nif ('", x, "' in r) {"
190− , "\n r.", x, " = r.", x, ".slice(0);"
186+ , "\n r.", x, " = [v].concat(r.", x, ");"
191− , "\n r.", x, ".unshift(v);"
192 , "\n} else { r.", x, " = [v]; }" ]
187 , "\n} else { r.", x, " = [v]; }" ]
193setField (x,e) = do
188setField (x,e) = do
189+ let rx = "r." ++ x
194− set <- globalAssign ("r." ++ x ++ "[0]") `liftM` toJS' e
190+ set <- globalAssign (rx ++ "[0]") `liftM` toJS' e
195− return (globalAssign ("r." ++ x) ("r." ++ x ++ ".slice(0)") ++ set)
191+ return (globalAssign rx (rx ++ ".slice(0)") ++ set)
196access x e = jsFunc "r" (ret body) ++ parens e
192access 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
198makeRecord kvs = do
194makeRecord kvs = do
199 kvs' <- (Map.toList . foldl' combine Map.empty) `liftM` mapM prep kvs
195 kvs' <- (Map.toList . foldl' combine Map.empty) `liftM` mapM prep kvs
200 let fs = map (\(k,vs) -> k ++ " : " ++ jsList vs) kvs' ++ ["_ : [true]"]
196 let fs = map (\(k,vs) -> k ++ " : " ++ jsList vs) kvs' ++ ["_ : [true]"]
@@ -216,9 +212,9 @@ instance ToJS Expr where
216 Boolean b -> return $ if b then "true" else "false"
212 Boolean b -> return $ if b then "true" else "false"
217 Range lo hi -> jsRange `liftM` toJS' lo `ap` toJS' hi
213 Range lo hi -> jsRange `liftM` toJS' lo `ap` toJS' hi
218 Access e x -> access x `liftM` toJS' e
214 Access e x -> access x `liftM` toJS' e
219− Remove e x -> recordToJS e (remove x) ""
215+ Remove e x -> recordToJS e ("\ndelete r." ++ x ++ ";")
220− Insert e x v -> recordToJS e "r[i]=e[i];" =<< addField (x,v)
216+ Insert e x v -> recordToJS e =<< addField (x,v)
221− Modify e fs -> recordToJS e "r[i]=e[i];" . concat =<< mapM setField fs
217+ Modify e fs -> recordToJS e . concat =<< mapM setField fs
222 Record fs -> makeRecord fs
218 Record fs -> makeRecord fs
223 Binop op e1 e2 -> binop op `liftM` toJS' e1 `ap` toJS' e2
219 Binop op e1 e2 -> binop op `liftM` toJS' e1 `ap` toJS' e2
224
220