git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
More work on the Prelude
commitbd1afdc663dbf9ad3acc9f781aec647c6d8209f5 authorPhil Freeman <paf31@cantab.net> dateFri 10 Jan 2014, 16:14 (13 years ago) parent2c253d3
9 files changed+42−62
libraries/jquery/Makefile−4 libraries/jquery/README.md+7 libraries/jquery/example.purs−10 libraries/jquery/jquery.js−7 libraries/jquery/jquery.purs+14−9 libraries/jquery/jquery_io.purs−30 libraries/jquery/tests/jquery.purs+10 libraries/prelude/prelude.purs+2−2 libraries/prelude/tests/Eff.purs+9
libraries/jquery/Makefiledeleted−4
@@ -1,4 +0,0 @@
1−all:
2− ../../dist/build/psc/psc jquery.purs example.purs -o all.js
3− cat jquery.js >> all.js
4− echo "main()" >> all.js
libraries/jquery/README.mdnew file+7
@@ -0,0 +1,7 @@
1+# JQuery Library
2+
3+A work in progress.
4+
5+To build the test, use
6+
7+ psc jquery.purs tests/jquery.purs
libraries/jquery/example.pursdeleted−10
@@ -1,10 +0,0 @@
1−module Example where
2−
3− import JQuery
4−
5− main = {
6− var div = create "<div>";
7− div = div `appendText` "Hello World!" `css` { color: "#FF0000" };
8− div = div `appendTo` select "body";
9− return { };
10− }
libraries/jquery/jquery.jsdeleted−7
@@ -1,7 +0,0 @@
1−function select(s) { return $(s); }
2−function create(s) { return $(s); }
3−function attr(j, a) { return j.attr(o); }
4−function css(j, a) { return j.css(o); }
5−function append(j1, j2) { return j1.append(j2); }
6−function appendTo(j1, j2) { return j1.appendTo(j2); }
7−function appendText(j1, s) { return j1.append(s); }
libraries/jquery/jquery.purs+14−9
@@ -1,25 +1,30 @@
11module JQuery where
22
3+ import Eff
4+
5+ -- An effect type which indicates DOM manipulation
6+ foreign import data DOM :: !
7+
38 -- The jQuery wrapper type
49 foreign import data JQuery :: *
510
611 -- Wrapper function for jQuery selection $('..')
7− foreign import select :: String -> JQuery
12+ foreign import select "function select(selector) { return function () { return jQuery(selector); }; }" :: forall eff. String -> Eff (dom :: DOM | eff) JQuery
813
914 -- Wrapper function for jQuery creation e.g. $('<div>')
10− foreign import create :: String -> JQuery
15+ foreign import create "function create(html) { return function () { return jQuery(html); }; }" :: forall eff. String -> Eff (dom :: DOM | eff) JQuery
1116
1217 -- .attr({ ... })
13− foreign import attr :: forall attr. JQuery -> { | attr } -> JQuery
18+ foreign import attr "function attr(attrs) { return function(ob) { return function () { return ob.attr(attrs); }; }; }" :: forall eff attr. { | attr } -> JQuery -> Eff (dom :: DOM | eff) JQuery
1419
1520 -- .css({ ... })
16− foreign import css :: forall css. JQuery -> { | css } -> JQuery
21+ foreign import css "function css(props) { return function(ob) { return function () { return ob.css(props); }; }; }" :: forall eff css. { | css } -> JQuery -> Eff (dom :: DOM | eff) JQuery
1722
1823 -- .append(...)
19− foreign import append :: JQuery -> JQuery -> JQuery
20−
21− -- .appendTo(...)
22− foreign import appendTo :: JQuery -> JQuery -> JQuery
24+ foreign import append "function append(ob1) { return function(ob) { return function () { return ob.append(ob1); }; }; }" :: forall eff. JQuery -> JQuery -> Eff (dom :: DOM | eff) JQuery
2325
2426 -- .append(...)
25− foreign import appendText :: JQuery -> String -> JQuery
27+ foreign import appendText "function appendText(s) { return function(ob) { return function () { return ob.append(s); }; }; }" :: forall eff. String -> JQuery -> Eff (dom :: DOM | eff) JQuery
28+
29+ -- Get the document body
30+ foreign import body "function body() { return jQuery(document.body); }" :: forall eff. Eff (dom :: DOM | eff) JQuery
libraries/jquery/jquery_io.pursdeleted−30
@@ -1,30 +0,0 @@
1−module JQuery where
2−
3− import Prelude
4−
5− -- An effect type which indicates DOM manipulation
6− foreign import data DOM :: !
7−
8− -- The jQuery wrapper type
9− foreign import data JQuery :: *
10−
11− -- Wrapper function for jQuery selection $('..')
12− foreign import select "function select(selector) { return function () { return jQuery(selector); }; }" :: forall eff. String -> Eff (dom :: DOM | eff) JQuery
13−
14− -- Wrapper function for jQuery creation e.g. $('<div>')
15− foreign import create "function create(html) { return function () { return jQuery(html); }; }" :: forall eff. String -> Eff (dom :: DOM | eff) JQuery
16−
17− -- .attr({ ... })
18− foreign import attr "function attr(attrs) { return function(ob) { return function () { return ob.attr(attrs); }; }; }" :: forall eff attr. { | attr } -> JQuery -> Eff (dom :: DOM | eff) JQuery
19−
20− -- .css({ ... })
21− foreign import css "function css(props) { return function(ob) { return function () { return ob.css(props); }; }; }" :: forall eff css. { | css } -> JQuery -> Eff (dom :: DOM | eff) JQuery
22−
23− -- .append(...)
24− foreign import append "function append(ob) { return function(ob1) { return function () { return ob.append(ob1); }; }; }" :: forall eff. JQuery -> JQuery -> Eff (dom :: DOM | eff) JQuery
25−
26− -- .append(...)
27− foreign import appendText "function appendText(ob) { return function(s) { return function () { return ob.append(s); }; }; }" :: forall eff. JQuery -> String -> Eff (dom :: DOM | eff) JQuery
28−
29− -- Get the document body
30− foreign import body "function body() { return jQuery(document.body); }" :: forall eff. Eff (dom :: DOM | eff) JQuery
libraries/jquery/tests/jquery.pursnew file+10
@@ -0,0 +1,10 @@
1+module Tests where
2+
3+import JQuery
4+
5+test = eff do
6+ b <- body
7+ div <- create "<div>"
8+ { color: "red" } `css` div
9+ appendText "Hello World" div
10+ b `append` div
libraries/prelude/prelude.purs+2−2
@@ -285,7 +285,7 @@ module Errors where
285285
286286 foreign import data Error :: * -> !
287287
288− foreign import throwError "function throwError(e) { return function() { throw e; }; }" :: forall e r. e -> Eff (err :: Error e | r) {}
288+ foreign import throwError "function throwError(e) { return function() { throw e; }; }" :: forall a e r. e -> Eff (err :: Error e | r) a
289289
290290 foreign import catchError "function catchError(c) { return function(t) { return function() { try { return t(); } catch(e) { return c(e)(); } }; }; }" :: forall e r a. (e -> Eff r a) -> Eff (err :: Error e | r) a -> Eff r a
291291
@@ -297,7 +297,7 @@ module IORef where
297297
298298 foreign import data IORef :: * -> *
299299
300− foreign import newIORef :: forall s r. a -> Eff (ref :: Ref | r) (IORef s)
300+ foreign import newIORef :: forall s r. s -> Eff (ref :: Ref | r) (IORef s)
301301
302302 foreign import readIORef :: forall s r. IORef s -> Eff (ref :: Ref | r) s
303303
libraries/prelude/tests/Eff.pursnew file+9
@@ -0,0 +1,9 @@
1+module Tests where
2+
3+import Prelude
4+import Errors
5+
6+test n = catchError (\s -> eff do return 0) ( eff do
7+ case {} of
8+ _ | n > 10 -> throwError "Error!"
9+ _ -> eff do return n)