on master help sign in
Update first half of .elm libraries
commit8a700e84d50ff34b3f172a05f6a01d8c757df8a8 authorevancz <info@elm-lang.org> dateSun 10 Mar 2013, 00:54 (14 years ago) parent944a056
7 files changed+45−87
libraries/Automaton.elm−8 libraries/Date.elm+3−23 libraries/Either.elm+7−3 libraries/HTTP.elm → libraries/Http.elm+4−5 libraries/JavaScript.elm+2−24 libraries/Json.elm+22−23 libraries/Native/JavaScript.js+7−1
libraries/Automaton.elm−8
@@ -3,14 +3,6 @@ module Automaton where
33
44data Automaton a b = Automaton (a -> (b, Automaton a b))
55
6−{--- API possibilies: All names and types are up for debate!
7−(^>>) :: (a -> b) -> Automaton b c -> Automaton a c
8−(>>^) :: Automaton a b -> (b -> c) -> Automaton a c
9−(^<<) :: (b -> c) -> Automaton a b -> Automaton a c
10−(<<^) :: Automaton b c -> (a -> b) -> Automaton a c
11−--}
12−
13−
146run : Automaton a b -> Signal a -> Signal b
157run (Automaton m0) input =
168 lift fst $ foldp' (\a (b, Automaton m) -> m a) m0 input
libraries/Date.elm+3−23
@@ -1,39 +1,19 @@
11
22module Date where
33
4−import Native.Date
5−
64data Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun
75
86data Month = Jan | Feb | Mar | Apr
97 | May | Jun | Jul | Aug
108 | Sep | Oct | Nov | Dec
119
12−
1310read : String -> Date
14−read = Native.Date.read
15−
1611toTime : Date -> Time
17−toTime = Native.Date.toTime
18−
19−
20−year : Date -> Int
21−year = Native.Date.year
2212
13+year : Date -> Int
2314month : Date -> Month
24−month = Native.Date.month
25−
26−day : Date -> Int
27−day = Native.Date.day
28−
15+day : Date -> Int
2916dayOfWeek : Date -> Day
30−dayOfWeek = Native.Date.dayOfWeek
31−
32−hour : Date -> Int
33−hour = Native.Date.hour
34−
17+hour : Date -> Int
3518minute : Date -> Int
36−minute = Native.Date.minute
37−
3819second : Date -> Int
39−second = Native.Date.second
libraries/Either.elm+7−3
@@ -1,4 +1,8 @@
11
2+module Either where
3+
4+import List (filter, partition)
5+
26data Either a b = Left a | Right b
37
48either : (a -> c) -> (b -> c) -> Either a b -> c
@@ -13,10 +17,10 @@ isRight e = case e of { Right _ -> True ; _ -> False }
1317
1418
1519lefts : [Either a b] -> [a]
16−lefts = Elm.List.filter isLeft
20+lefts = filter isLeft
1721
1822rights : [Either a b] -> [b]
19−rights = Elm.List.filter isRight
23+rights = filter isRight
2024
2125partition : [Either a b] -> ([a],[b])
22−partition = Elm.List.partition isLeft
26+partition = partition isLeft
libraries/HTTP.elm → libraries/Http.elmrenamed+4−5
@@ -2,9 +2,9 @@
22-- [WebSocket](http://elm-lang.org/docs/WebSocket.elm) library if
33-- you have very strict latency requirements.
44
5−module HTTP where
5+module Http where
66
7−import Native.HTTP
7+import Native.Http (send)
88
99-- The datatype for responses. Success contains only the returned message.
1010-- Failures contain both an error code and an error message.
@@ -15,7 +15,7 @@ type Request a = {
1515 url : String,
1616 body : a,
1717 headers : [(String,String)]
18−}
18+ }
1919
2020-- Create a customized request. Arguments are request type (get, post, put,
2121-- delete, etc.), target url, data, and a list of additional headers.
@@ -34,10 +34,9 @@ post url body = Request "POST" url body []
3434-- Performs an HTTP request with the given requests. Produces a signal
3535-- that carries the responses.
3636send : Signal (Request a) -> Signal (Response String)
37−send = Native.HTTP.send
3837
3938-- Performs an HTTP GET request with the given urls. Produces a signal
4039-- that carries the responses.
4140sendGet : Signal String -> Signal (Response String)
42−sendGet = send . lift get
41+sendGet reqs = send (lift get reqs)
4342
libraries/JavaScript.elm+2−24
@@ -1,43 +1,21 @@
11
22module JavaScript where
33
4−import Native.JavaScript as JS
54
65-- To Elm
76
87toString : JSString -> String
9−toString = JS.toString
10−
8+toList : JSArray a -> [a]
119toInt : JSNumber -> Int
12−toInt = JS.toInt
13−
1410toFloat : JSNumber -> Float
15−toFloat = JS.id
16−
1711toBool : JSBool -> Bool
18−toBool = JS.id
19−
20−toList : JSArray a -> [a]
21−toList = JS.toList
22−
23−toRecord = JS.toRecord
2412
2513
2614-- From Elm
2715
2816fromString : String -> JSString
29−fromString = JS.fromString
30−
17+fromList : [a] -> JSArray a
3118fromInt : Int -> JSNumber
32−fromInt = JS.id
33−
3419fromFloat : Float -> JSNumber
35−fromFloat = JS.id
36−
3720fromBool : Bool -> JSBool
38−fromBool = JS.id
39−
40−fromList : [a] -> JSArray a
41−fromList = JS.fromList
4221
43−fromRecord = JS.fromRecord
libraries/Json.elm+22−23
@@ -30,47 +30,46 @@ fromString : String -> Maybe Value
3030fromString s = Native.fromJSString (JS.fromString s)
3131
3232fromJSString : JSString -> Maybe Value
33−fromJSString = Native.fromJSString
3433
3534
3635-- Extract Elm values from Json values
3736
38−string : String -> Value -> String
39−string base v = case v of { String s -> s ; _ -> base }
37+string : Value -> String
38+string v = case v of { String s -> s ; _ -> "" }
4039
41−number : Float -> Value -> Float
42−number base v = case v of { Number n -> n ; _ -> base }
40+number : Value -> Float
41+number v = case v of { Number n -> n ; _ -> 0 }
4342
44−boolean : Bool -> Value -> Bool
45−boolean base v = case v of { Boolean b -> b ; _ -> base }
43+boolean : Value -> Bool
44+boolean v = case v of { Boolean b -> b ; _ -> False }
4645
47−array : [Value] -> Value -> [Value]
48−array base v = case v of { Array a -> a ; _ -> base }
46+array : Value -> [Value]
47+array v = case v of { Array a -> a ; _ -> [] }
4948
50−object : Dict String Value -> Value -> Dict String Value
51−object base v = case v of { Object o -> o ; _ -> base }
49+object : Value -> Dict String Value
50+object v = case v of { Object o -> o ; _ -> Dict.empty }
5251
5352
5453-- Extract Elm values from dictionaries of Json values
5554
56−find get =
57− let f base key dict =
55+find get base =
56+ let f key dict =
5857 case Dict.lookup key dict of
5958 Nothing -> base
60− Just v -> get base v
59+ Just v -> get v
6160 in f
6261
6362findString : String -> Dict String Value -> String
64−findString = find string
63+findString = find string ""
6564
66−findNumber : Float -> Dict String Value -> Float
67−findNumber = find number
65+findNumber : String -> Dict String Value -> Float
66+findNumber = find number 0
6867
69−findBoolean : Bool -> Dict String Value -> Bool
70−findBoolean = find boolean
68+findBoolean : String -> Dict String Value -> Bool
69+findBoolean = find boolean False
7170
72−findArray : [Value] -> Dict String Value -> [Value]
73−findArray = find array
71+findArray : String -> Dict String Value -> [Value]
72+findArray = find array []
7473
75−findObject : Dict String Value -> Dict String Value -> Dict String Value
76−findObject = find object
74+findObject : String -> Dict String Value -> Dict String Value
75+findObject = find object Dict.empty
libraries/Native/JavaScript.js+7−1
@@ -61,13 +61,19 @@ Elm.Native.JavaScript = function(elm) {
6161 throw new Error("'fromRecord' must be called on a record.");
6262 }
6363
64+ function id(n) { return n }
65+
6466 return elm.Native.JavaScript = {
65− id : function(n) { return n },
67+ toFloat : id,
68+ toBool : id,
6669 toInt : function(n) { return n|0 },
6770 toString : function(s) { return List.fromArray(s) },
6871 toList : List.fromArray,
6972 fromString : function(s) { return List.toArray(s).join('') },
7073 fromList : List.toArray,
74+ fromInt : id,
75+ fromFloat : id,
76+ fromBool : id,
7177 toRecord : fromJS,
7278 fromRecord : fromRecord
7379 };