New convention for storing module values, fixes bug
Before it was not possible to add values to anything except leafs of
the namespace structure.
commitb40f2958d431056f04b3f06cbfb861ea399ebe50
authorEvan Czaplicki <info@elm-lang.org>
dateMon 30 Sep 2013, 01:32 (13 years ago)
parent2cb4fd8
compiler/Generate/JavaScript.hs+3−3
@@ -282,9 +282,9 @@ jsModule modul =
282282 show . prettyPrint $ setup (Just "Elm") (names modul ++ ["make"]) ++
283283 [ assign ("Elm" : names modul ++ ["make"]) (function ["elm"] programStmts) ]
284284 where
285− thisModule = dotSep ("elm" : names modul)
285+ thisModule = dotSep ("elm" : names modul ++ ["values"])
286286 programStmts =
287− concat [ setup (Just "elm") (names modul)
287+ concat [ setup (Just "elm") (names modul ++ ["values"])
288288 , [ IfSingleStmt () thisModule (ReturnStmt () (Just thisModule)) ]
289289 , [ internalImports (List.intercalate "." (names modul)) ]
290290 , concatMap jsImport (imports modul)
@@ -296,7 +296,7 @@ jsModule modul =
296296 , [ ReturnStmt () (Just thisModule) ]
297297 ]
298298
299− jsExports = assign ("elm" : names modul) (ObjectLit () exs)
299+ jsExports = assign ("elm" : names modul ++ ["values"]) (ObjectLit () exs)
300300 where
301301 exs = map entry . filter (not . isOp) $ "_op" : exports modul
302302 entry x = (PropId () (var x), ref x)
libraries/Native/Basics.js+4−2
@@ -1,7 +1,9 @@
11
22Elm.Native.Basics = {};
33Elm.Native.Basics.make = function(elm) {
4− if (elm.Native.Basics) return elm.Native.Basics;
4+ elm.Native = elm.Native || {};
5+ elm.Native.Basics = elm.Native.Basics || {};
6+ if (elm.Native.Basics.values) return elm.Native.Basics.values;
57
68 var JS = Elm.Native.JavaScript.make(elm);
79 // var Maybe = Elm.Maybe(elm);
@@ -104,5 +106,5 @@ Elm.Native.Basics.make = function(elm) {
104106 snd:snd
105107 };
106108
107− return elm.Native.Basics = basics;
109+ return elm.Native.Basics.values = basics;
108110};
libraries/Native/Char.js+3−2
@@ -1,7 +1,8 @@
11Elm.Native.Char = {};
22Elm.Native.Char.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.Char) return elm.Native.Char;
4+ elm.Native.Char = elm.Native.Char || {};
5+ if (elm.Native.Char.values) return elm.Native.Char.values;
56
67 function isBetween(lo,hi) { return function(chr) {
78 var c = chr.charCodeAt(0);
@@ -12,7 +13,7 @@ Elm.Native.Char.make = function(elm) {
1213 var chk1 = isBetween('a'.charCodeAt(0),'f'.charCodeAt(0));
1314 var chk2 = isBetween('A'.charCodeAt(0),'F'.charCodeAt(0));
1415
15− return elm.Native.Char = {
16+ return elm.Native.Char.values = {
1617 fromCode : function(c) { return String.fromCharCode(c); },
1718 toCode : function(c) { return c.toUpperCase().charCodeAt(0); },
1819 toUpper : function(c) { return c.toUpperCase(); },
libraries/Native/Color.js+3−2
@@ -1,7 +1,8 @@
11Elm.Native.Color = {};
22Elm.Native.Color.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.Color) return elm.Native.Color;
4+ elm.Native.Color = elm.Native.Color || {};
5+ if (elm.Native.Color.values) return elm.Native.Color.values;
56
67 var Utils = Elm.Native.Utils.make(elm);
78
@@ -59,7 +60,7 @@ Elm.Native.Color.make = function(elm) {
5960 return { ctor:"Color", _0:norm(r+m), _1:norm(g+m), _2:norm(b+m), _3:1 };
6061 }
6162
62− return elm.Native.Color = {
63+ return elm.Native.Color.values = {
6364 hsva:F4(hsva),
6465 hsv:F3(hsv),
6566 complement:complement
libraries/Native/Date.js+3−2
@@ -1,7 +1,8 @@
11Elm.Native.Date = {};
22Elm.Native.Date.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.Date) return elm.Native.Date;
4+ elm.Native.Date = elm.Native.Date || {};
5+ if (elm.Native.Date.values) return elm.Native.Date.values;
56
67 var JS = Elm.JavaScript.make(elm);
78 var Maybe = Elm.Maybe.make(elm);
@@ -17,7 +18,7 @@ Elm.Native.Date.make = function(elm) {
1718 var monthTable = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
1819 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
1920
20− return elm.Native.Date = {
21+ return elm.Native.Date.values = {
2122 read : readDate,
2223 year : function(d) { return d.getFullYear(); },
2324 month : function(d) { return { ctor:monthTable[d.getMonth()] }; },
libraries/Native/Error.js+3−2
@@ -1,7 +1,8 @@
11Elm.Native.Error = {};
22Elm.Native.Error.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.Error) return elm.Native.Error;
4+ elm.Native.Error = elm.Native.Error || {};
5+ if (elm.Native.Error.values) return elm.Native.Error.values;
56
67 var fromString = Elm.Native.JavaScript.make(elm).fromString;
78
@@ -27,5 +28,5 @@ Elm.Native.Error.make = function(elm) {
2728
2829 function raise(str) { throw new Error(fromString(str)); }
2930
30− return elm.Native.Error = { Case: Case, If: If, raise: raise };
31+ return elm.Native.Error.values = { Case: Case, If: If, raise: raise };
3132};
libraries/Native/Graphics/Collage.js+3−2
@@ -3,7 +3,8 @@ Elm.Native.Graphics.Collage.make = function(elm) {
33
44 elm.Native = elm.Native || {};
55 elm.Native.Graphics = elm.Native.Graphics || {};
6− if (elm.Native.Graphics.Collage) return elm.Native.Graphics.Collage;
6+ elm.Native.Graphics.Collage = elm.Native.Graphics.Collage || {};
7+ if (elm.Native.Graphics.Collage.values) return elm.Native.Graphics.Collage.values;
78
89 var newElement = Elm.Graphics.Element.make(elm).newElement;
910 var C = ElmRuntime.use(ElmRuntime.Render.Collage);
@@ -17,6 +18,6 @@ Elm.Native.Graphics.Collage.make = function(elm) {
1718 model: {w:w, h:h, forms:forms}
1819 });
1920 }
20− return elm.Native.Graphics.Collage = { collage:F3(collage) };
21+ return elm.Native.Graphics.Collage.values = { collage:F3(collage) };
2122
2223};
libraries/Native/Graphics/Input.js+3−2
@@ -3,7 +3,8 @@ Elm.Native.Graphics.Input.make = function(elm) {
33
44 elm.Native = elm.Native || {};
55 elm.Native.Graphics = elm.Native.Graphics || {};
6− if (elm.Native.Graphics.Input) return elm.Native.Graphics.Input;
6+ elm.Native.Graphics.Input = elm.Native.Graphics.Input || {};
7+ if (elm.Native.Graphics.Input.values) return elm.Native.Graphics.Input.values;
78
89 var Render = ElmRuntime.use(ElmRuntime.Render.Element);
910 var newNode = ElmRuntime.use(ElmRuntime.Render.Utils).newElement;
@@ -289,7 +290,7 @@ Elm.Native.Graphics.Input.make = function(elm) {
289290 }
290291 }
291292
292− return elm.Native.Graphics.Input = {
293+ return elm.Native.Graphics.Input.values = {
293294 buttons:buttons,
294295 customButtons:customButtons,
295296 hoverables:hoverables,
libraries/Native/JavaScript.js+3−2
@@ -1,7 +1,8 @@
11Elm.Native.JavaScript = {};
22Elm.Native.JavaScript.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.JavaScript) return elm.Native.JavaScript;
4+ elm.Native.JavaScript = elm.Native.JavaScript || {};
5+ if (elm.Native.JavaScript.values) return elm.Native.JavaScript.values;
56
67 var List = Elm.Native.List.make(elm);
78 var Render = ElmRuntime.use(ElmRuntime.Render.Element);
@@ -82,7 +83,7 @@ Elm.Native.JavaScript.make = function(elm) {
8283 return Render.render(element);
8384 }
8485
85− return elm.Native.JavaScript = {
86+ return elm.Native.JavaScript.values = {
8687 toFloat : id,
8788 toBool : id,
8889 toInt : function(n) { return n|0; },
libraries/Native/Json.js+5−1
@@ -1,6 +1,10 @@
11Elm.Native.Json = {};
22Elm.Native.Json.make = function(elm) {
33
4+ elm.Native = elm.Native || {};
5+ elm.Native.Json = elm.Native.Json || {};
6+ if (elm.Native.Json.values) return elm.Native.Json.values;
7+
48 var Maybe = Elm.Maybe.make(elm);
59 var Dict = Elm.Dict.make(elm);
610 var List = Elm.List.make(elm);
@@ -58,7 +62,7 @@ Elm.Native.Json.make = function(elm) {
5862 }
5963 }
6064
61− return elm.Native.Json = {
65+ return elm.Native.Json.values = {
6266 toJSString : F2(toPrettyJSString),
6367 fromJSString : fromJSString,
6468 toJSObject : fromValue,
libraries/Native/List.js+3−2
@@ -1,9 +1,10 @@
11Elm.Native.List = {};
22Elm.Native.List.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.List) return elm.Native.List;
4+ elm.Native.List = elm.Native.List || {};
5+ if (elm.Native.List.values) return elm.Native.List.values;
56 if ('values' in Elm.Native.List)
6− return elm.Native.List = Elm.Native.List.values;
7+ return elm.Native.List.values = Elm.Native.List.values;
78
89 var Utils = Elm.Native.Utils.make(elm);
910
libraries/Native/Prelude.js+5−3
@@ -1,6 +1,8 @@
11Elm.Native.Prelude = {};
22Elm.Native.Prelude.make = function(elm) {
3− if (elm.Native.Prelude) return elm.Native.Prelude;
3+ elm.Native = elm.Native || {};
4+ elm.Native.Prelude = elm.Native.Prelude || {};
5+ if (elm.Native.Prelude.values) return elm.Native.Prelude.values;
46
57 var JS = Elm.Native.JavaScript.make(elm);
68 var Maybe = Elm.Maybe.make(elm);
@@ -42,9 +44,9 @@ Elm.Native.Prelude.make = function(elm) {
4244 return Maybe.Just(parseFloat(s));
4345 }
4446
45− return elm.Native.Prelude = {
47+ return elm.Native.Prelude.values = {
4648 readInt:readInt,
47− readFloat:readFloat,
49+ readFloat:readFloat
4850 };
4951
5052};
libraries/Native/Show.js+3−2
@@ -1,7 +1,8 @@
11Elm.Native.Show = {};
22Elm.Native.Show.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.Show) return elm.Native.Show;
4+ elm.Native.Show = elm.Native.Show || {};
5+ if (elm.Native.Show.values) return elm.Native.Show.values;
56
67 var NList = Elm.Native.List.make(elm);
78 var List = Elm.List.make(elm);
@@ -95,5 +96,5 @@ Elm.Native.Show.make = function(elm) {
9596 c === '\\' ? '\\\\' : c;
9697 }
9798
98− return elm.Native.Show = { show:show };
99+ return elm.Native.Show.values = { show:show };
99100};
libraries/Native/Signal/Http.js+4−3
@@ -2,7 +2,8 @@ Elm.Native.Http = {};
22Elm.Native.Http.make = function(elm) {
33
44 elm.Native = elm.Native || {};
5− if (elm.Native.Http) return elm.Native.Http;
5+ elm.Native.Http = elm.Native.Http || {};
6+ if (elm.Native.Http.values) return elm.Native.Http.values;
67
78
89 var JS = Elm.JavaScript.make(elm);
@@ -50,12 +51,12 @@ Elm.Native.Http.make = function(elm) {
5051 }
5152
5253 function send(requests) {
53− var responses = Signal.constant(elm.Http.Waiting);
54+ var responses = Signal.constant(elm.Http.values.Waiting);
5455 var sender = A2( Signal.lift, registerReq([],responses), requests );
5556 function f(x) { return function(y) { return x; } }
5657 return A3( Signal.lift2, f, responses, sender );
5758 }
5859
59− return elm.Native.Http = {send:send};
60+ return elm.Native.Http.values = {send:send};
6061
6162};
libraries/Native/Signal/Keyboard.js+3−2
@@ -2,7 +2,8 @@ Elm.Native.Keyboard = {};
22Elm.Native.Keyboard.make = function(elm) {
33
44 elm.Native = elm.Native || {};
5− if (elm.Native.Keyboard) return elm.Native.Keyboard;
5+ elm.Native.Keyboard = elm.Native.Keyboard || {};
6+ if (elm.Native.Keyboard.values) return elm.Native.Keyboard.values;
67
78 // Duplicated from Native.Signal
89 function send(node, timestep, changed) {
@@ -103,7 +104,7 @@ Elm.Native.Keyboard.make = function(elm) {
103104
104105 var lastPressed = Signal.dropRepeats(downEvents);
105106
106− return elm.Native.Keyboard = {
107+ return elm.Native.Keyboard.values = {
107108 isDown:is,
108109 directions:F4(dir),
109110 keysDown:keysDown,
libraries/Native/Signal/Mouse.js+3−2
@@ -2,7 +2,8 @@ Elm.Native.Mouse = {};
22Elm.Native.Mouse.make = function(elm) {
33
44 elm.Native = elm.Native || {};
5− if (elm.Native.Mouse) return elm.Native.Mouse;
5+ elm.Native.Mouse = elm.Native.Mouse || {};
6+ if (elm.Native.Mouse.values) return elm.Native.Mouse.values;
67
78 var Signal = Elm.Signal.make(elm);
89 var Utils = Elm.Native.Utils.make(elm);
@@ -55,7 +56,7 @@ Elm.Native.Mouse.make = function(elm) {
5556 elm.notify(position.id, getXY(e));
5657 });
5758
58− return elm.Native.Mouse = {
59+ return elm.Native.Mouse.values = {
5960 position: position,
6061 x:x,
6162 y:y,
libraries/Native/Signal/Random.js+6−5
@@ -2,7 +2,8 @@ Elm.Native.Random = {};
22Elm.Native.Random.make = function(elm) {
33
44 elm.Native = elm.Native || {};
5− if (elm.Native.Random) return elm.Native.Random;
5+ elm.Native.Random = elm.Native.Random || {};
6+ if (elm.Native.Random.values) return elm.Native.Random.values;
67
78 var Signal = Elm.Signal.make(elm);
89
@@ -16,8 +17,8 @@ Elm.Native.Random.make = function(elm) {
1617 return A2( Signal.lift, f, signal );
1718 }
1819
19− elm.Native.Random = { range: F3(range) };
20− elm.Native.Random['flt'] = flt;
21− return elm.Native.Random;
22−
20+ return elm.Native.Random.values = {
21+ range: F3(range),
22+ flt: flt
23+ };
2324};
libraries/Native/Signal/Signal.js+3−2
@@ -3,7 +3,8 @@ Elm.Native.Signal = {};
33Elm.Native.Signal.make = function(elm) {
44
55 elm.Native = elm.Native || {};
6− if (elm.Native.Signal) return elm.Native.Signal;
6+ elm.Native.Signal = elm.Native.Signal || {};
7+ if (elm.Native.Signal.values) return elm.Native.Signal.values;
78
89 var Utils = Elm.Native.Utils.make(elm);
910 var foldl1 = Elm.List.make(elm).foldl1;
@@ -203,7 +204,7 @@ Elm.Native.Signal.make = function(elm) {
203204 function merge(s1,s2) { return new Merge(s1,s2); }
204205 function merges(ss) { return A2(foldl1, F2(merge), ss); }
205206
206− return elm.Native.Signal = {
207+ return elm.Native.Signal.values = {
207208 constant : function(v) { return new Input(v); },
208209 lift : F2(lift ),
209210 lift2 : F3(lift2),
libraries/Native/Signal/Time.js+5−1
@@ -1,6 +1,10 @@
11Elm.Native.Time = {};
22Elm.Native.Time.make = function(elm) {
33
4+ elm.Native = elm.Native || {};
5+ elm.Native.Time = elm.Native.Time || {};
6+ if (elm.Native.Time.values) return elm.Native.Time.values;
7+
48 var Signal = Elm.Signal.make(elm);
59 var NS = Elm.Native.Signal.make(elm);
610 var Maybe = Elm.Maybe.make(elm);
@@ -49,7 +53,7 @@ Elm.Native.Time.make = function(elm) {
4953 var t = Date.parse(s);
5054 return isNaN(t) ? Maybe.Nothing : Maybe.Just(t);
5155 }
52− return elm.Native.Time = {
56+ return elm.Native.Time.values = {
5357 fpsWhen : F2(fpsWhen),
5458 fps : function(t) { return fpsWhen(t, Signal.constant(true)); },
5559 every : function(t) { return everyWhen(t, Signal.constant(true)) },
libraries/Native/Signal/Touch.js+3−2
@@ -2,7 +2,8 @@ Elm.Native.Touch = {};
22Elm.Native.Touch.make = function(elm) {
33
44 elm.Native = elm.Native || {};
5− if (elm.Native.Touch) return elm.Native.Touch;
5+ elm.Native.Touch = elm.Native.Touch || {};
6+ if (elm.Native.Touch.values) return elm.Native.Touch.values;
67
78 var Signal = Elm.Signal.make(elm);
89 var JS = Elm.JavaScript.make(elm);
@@ -143,6 +144,6 @@ Elm.Native.Touch.make = function(elm) {
143144 return sig2;
144145 }();
145146
146− return elm.Native.Touch = { touches: touches, taps: taps };
147+ return elm.Native.Touch.values = { touches: touches, taps: taps };
147148
148149};
libraries/Native/Signal/WebSocket.js+3−2
@@ -2,7 +2,8 @@ Elm.Native.WebSocket = {};
22Elm.Native.WebSocket.make = function(elm) {
33
44 elm.Native = elm.Native || {};
5− if (elm.Native.WebSocket) return elm.Native.WebSocket;
5+ elm.Native.WebSocket = elm.Native.WebSocket || {};
6+ if (elm.Native.WebSocket.values) return elm.Native.WebSocket.values;
67
78 var Signal = Elm.Signal.make(elm);
89 var JS = Elm.JavaScript.make(elm);
@@ -33,5 +34,5 @@ Elm.Native.WebSocket.make = function(elm) {
3334 return A3(Signal.lift2, F2(take1), incoming, A2(Signal.lift, send, outgoing));
3435 }
3536
36− return elm.Native.WebSocket = { connect: F2(open) };
37+ return elm.Native.WebSocket.values = { connect: F2(open) };
3738};
libraries/Native/Signal/Window.js+3−2
@@ -2,7 +2,8 @@ Elm.Native.Window = {};
22Elm.Native.Window.make = function(elm) {
33
44 elm.Native = elm.Native || {};
5− if (elm.Native.Window) return elm.Native.Window;
5+ elm.Native.Window = elm.Native.Window || {};
6+ if (elm.Native.Window.values) return elm.Native.Window.values;
67
78 var Signal = Elm.Signal.make(elm);
89 var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
@@ -34,7 +35,7 @@ Elm.Native.Window.make = function(elm) {
3435 }
3536 elm.addListener([dimensions.id], window, 'resize', resizeIfNeeded);
3637
37− return elm.Native.Window = {
38+ return elm.Native.Window.values = {
3839 dimensions:dimensions,
3940 width:width,
4041 height:height,
libraries/Native/Text.js+3−2
@@ -1,7 +1,8 @@
11Elm.Native.Text = {};
22Elm.Native.Text.make = function(elm) {
33 elm.Native = elm.Native || {};
4− if (elm.Native.Text) return elm.Native.Text;
4+ elm.Native.Text = elm.Native.Text || {};
5+ if (elm.Native.Text.values) return elm.Native.Text.values;
56
67 var JS = Elm.JavaScript.make(elm);
78 var htmlHeight = Elm.Native.Utils.make(elm).htmlHeight;
@@ -108,7 +109,7 @@ Elm.Native.Text.make = function(elm) {
108109 return position('left')(toText(v));
109110 }
110111
111− return elm.Native.Text = {
112+ return elm.Native.Text.values = {
112113 toText: toText,
113114
114115 header : header,
libraries/Native/Transform2D.js+3−3
@@ -1,9 +1,9 @@
1−
21Elm.Native.Transform2D = {};
32Elm.Native.Transform2D.make = function(elm) {
43
54 elm.Native = elm.Native || {};
6− if (elm.Native.Transform2D) return elm.Native.Transform2D;
5+ elm.Native.Transform2D = elm.Native.Transform2D || {};
6+ if (elm.Native.Transform2D.values) return elm.Native.Transform2D.values;
77
88 var A;
99 if (typeof Float32Array === 'undefined') {
@@ -80,7 +80,7 @@ Elm.Native.Transform2D.make = function(elm) {
8080 m21*ndx + m22*ndy + mdy]);
8181 }
8282
83− return elm.Native.Transform2D = {
83+ return elm.Native.Transform2D.values = {
8484 identity:identity,
8585 matrix:F6(matrix),
8686 rotation:rotation,
libraries/Native/Utils.js+3−4
@@ -1,10 +1,9 @@
1−
21Elm.Native.Utils = {};
32Elm.Native.Utils.make = function(elm) {
4− 'use strict';
53
64 elm.Native = elm.Native || {};
7− if (elm.Native.Utils) return elm.Native.Utils;
5+ elm.Native.Utils = elm.Native.Utils || {};
6+ if (elm.Native.Utils.values) return elm.Native.Utils.values;
87
98 function eq(x,y) {
109 if (x === y) return true;
@@ -144,7 +143,7 @@ Elm.Native.Utils.make = function(elm) {
144143 elm.addListener(elm.inputs, elm.node, 'mouseover', adjustOffset);
145144 }
146145
147− return elm.Native.Utils = {
146+ return elm.Native.Utils.values = {
148147 eq:eq,
149148 cmp:cmp,
150149 compare:F2(compare),
runtime/Init.js+2−2
@@ -164,7 +164,7 @@ function initGraphics(elm, Module) {
164164 function domUpdate(newScene, currentScene) {
165165 ElmRuntime.draw(function(_) {
166166 Render.update(elm.node.firstChild, currentScene, newScene);
167− if (elm.Native.Window) elm.Native.Window.resizeIfNeeded();
167+ if (elm.Native.Window) elm.Native.Window.values.resizeIfNeeded();
168168 });
169169 return newScene;
170170 }
@@ -172,7 +172,7 @@ function initGraphics(elm, Module) {
172172
173173 // must check for resize after 'renderer' is created so
174174 // that changes show up.
175− if (elm.Native.Window) elm.Native.Window.resizeIfNeeded();
175+ if (elm.Native.Window) elm.Native.Window.values.resizeIfNeeded();
176176
177177 return renderer;
178178}