on master help sign in
Get show, readInt, and readFloat working again
a268421Evan Czaplicki
compiler/Metadata/Prelude.hs+1−1
@@ -25,7 +25,7 @@ prelude :: [(String, ImportMethod)]
25prelude = text ++ map (\n -> (n, Hiding [])) modules
25prelude = text ++ map (\n -> (n, Hiding [])) modules
26 where
26 where
27 text = map ((,) "Text") [ As "Text", Hiding ["link", "color", "height"] ]
27 text = map ((,) "Text") [ As "Text", Hiding ["link", "color", "height"] ]
28− modules = [ "Basics", "Signal", "List", "Maybe", "Time"
28+ modules = [ "Basics", "Signal", "List", "Maybe", "Time", "Prelude"
29 , "Graphics.Element", "Color", "Graphics.Collage" ]
29 , "Graphics.Element", "Color", "Graphics.Collage" ]
30
30
31{-# NOINLINE interfaces #-}
31{-# NOINLINE interfaces #-}
libraries/Basics.elm−11
@@ -195,17 +195,6 @@ ceiling = Native.Basics.ceiling
195toFloat : Int -> Float
195toFloat : Int -> Float
196toFloat = Native.Basics.toFloat
196toFloat = Native.Basics.toFloat
197
197
198−-- Convert almost any value to its string representation.
199−show : a -> String
200−show = Native.Basics.show
201−
202−-- Read an integer from a string
203−-- readInt : String -> Maybe Int
204−--readInt = Native.Basics.readInt
205−
206−-- Read a float from a string.
207−-- readFloat : String -> Maybe Float
208−--readFloat = Native.Basics.readFloat
209
198
210-- Function Helpers
199-- Function Helpers
211
200
libraries/Native/Prelude.jsnew file+51
@@ -0,0 +1,51 @@
1+
2+Elm.Native.Prelude = function(elm) {
3+ 'use strict';
4+ if (elm.Native.Prelude) return elm.Native.Prelude;
5+
6+ var JS = Elm.Native.JavaScript(elm);
7+ var Maybe = Elm.Maybe(elm);
8+ var Char = Elm.Char(elm);
9+
10+ function readInt(str) {
11+ var s = JS.fromString(str);
12+ var len = s.length;
13+ if (len === 0) { return Maybe.Nothing; }
14+ var start = 0;
15+ if (s[0] == '-') {
16+ if (len === 1) { return Maybe.Nothing; }
17+ start = 1;
18+ }
19+ for (var i = start; i < len; ++i) {
20+ if (!Char.isDigit(s[i])) { return Maybe.Nothing; }
21+ }
22+ return Maybe.Just(parseInt(s, 10));
23+ }
24+
25+ function readFloat(str) {
26+ var s = JS.fromString(str);
27+ var len = s.length;
28+ if (len === 0) { return Maybe.Nothing; }
29+ var start = 0;
30+ if (s[0] == '-') {
31+ if (len === 1) { return Maybe.Nothing; }
32+ start = 1;
33+ }
34+ var dotCount = 0;
35+ for (var i = start; i < len; ++i) {
36+ if (Char.isDigit(s[i])) { continue; }
37+ if (s[i] === '.') {
38+ dotCount += 1;
39+ if (dotCount <= 1) { continue; }
40+ }
41+ return Maybe.Nothing;
42+ }
43+ return Maybe.Just(parseFloat(s));
44+ }
45+
46+ return elm.Native.Prelude = {
47+ readInt:readInt,
48+ readFloat:readFloat,
49+ };
50+
51+};
libraries/Prelude.elmnew file+18
@@ -0,0 +1,18 @@
1+module Prelude where
2+
3+import Basics (String)
4+import Maybe (Maybe)
5+import Native.Prelude
6+import Native.Show
7+
8+-- Convert almost any value to its string representation.
9+show : a -> String
10+show = Native.Show.show
11+
12+-- Read an integer from a string
13+readInt : String -> Maybe Int
14+readInt = Native.Prelude.readInt
15+
16+-- Read a float from a string.
17+readFloat : String -> Maybe Float
18+readFloat = Native.Prelude.readFloat