on master help sign in
Rename jsc pakcage to JSaddle and JSC monad to JSM
653f998Hamish Mackenzie
README.md+4−3
@@ -1,4 +1,5 @@
1−jsc
1+JSaddle
2−===
2+=======
3
3
4−High level interface for webkit-javascriptcore
4+A EDSL (embedded domain specific language) interface for JavaScript.
5+Works with GHCJS or webkitgtk3-javascriptcore.
jsc.cabal → jsaddle.cabalrenamed+13−13
@@ -1,4 +1,4 @@
1−name: jsc
1+name: jsaddle
2version: 0.1.1.2
2version: 0.1.1.2
3cabal-version: >=1.10
3cabal-version: >=1.10
4license: MIT
4license: MIT
@@ -15,7 +15,7 @@ build-type: Simple
15
15
16Source-Repository head
16Source-Repository head
17 type: git
17 type: git
18− location: https://github.com/ghcjs/jsc
18+ location: https://github.com/ghcjs/jsaddle
19
19
20flag gtk3
20flag gtk3
21 Description: Use GTK3 rather than GTK2
21 Description: Use GTK3 rather than GTK2
@@ -48,24 +48,24 @@ library
48 webkit-javascriptcore >=0.12.5 && <0.13
48 webkit-javascriptcore >=0.12.5 && <0.13
49
49
50 if flag(jmacro)
50 if flag(jmacro)
51− exposed-modules: Language.Javascript.JSC.JMacro
51+ exposed-modules: Language.Javascript.JSaddle.JMacro
52 build-depends: jmacro >=0.6.3 && <0.8
52 build-depends: jmacro >=0.6.3 && <0.8
53
53
54 build-depends: template-haskell -any, base <5, lens >=3.8.5 && <4.1,
54 build-depends: template-haskell -any, base <5, lens >=3.8.5 && <4.1,
55 text >=0.11.2.3 && <1.2, transformers >=0.3.0.0 && <0.4
55 text >=0.11.2.3 && <1.2, transformers >=0.3.0.0 && <0.4
56
56
57− exposed-modules: Language.Javascript.JSC
57+ exposed-modules: Language.Javascript.JSaddle
58− Language.Javascript.JSC.Arguments Language.Javascript.JSC.Classes
58+ Language.Javascript.JSaddle.Arguments Language.Javascript.JSaddle.Classes
59− Language.Javascript.JSC.Evaluate Language.Javascript.JSC.Exception
59+ Language.Javascript.JSaddle.Evaluate Language.Javascript.JSaddle.Exception
60− Language.Javascript.JSC.Monad
60+ Language.Javascript.JSaddle.Monad
61− Language.Javascript.JSC.Object Language.Javascript.JSC.Properties
61+ Language.Javascript.JSaddle.Object Language.Javascript.JSaddle.Properties
62− Language.Javascript.JSC.String Language.Javascript.JSC.Value
62+ Language.Javascript.JSaddle.String Language.Javascript.JSaddle.Value
63− Language.Javascript.JSC.Types
63+ Language.Javascript.JSaddle.Types
64 exposed: True
64 exposed: True
65 buildable: True
65 buildable: True
66 default-language: Haskell2010
66 default-language: Haskell2010
67 hs-source-dirs: src
67 hs-source-dirs: src
68− other-modules: Language.Javascript.JSC.PropRef
68+ other-modules: Language.Javascript.JSaddle.PropRef
69
69
70test-suite test-tool
70test-suite test-tool
71 if flag(jsffi)
71 if flag(jsffi)
@@ -92,8 +92,8 @@ test-suite test-tool
92
92
93 build-depends: template-haskell -any, base <5, lens >=3.8.5 && <4.1,
93 build-depends: template-haskell -any, base <5, lens >=3.8.5 && <4.1,
94 text >=0.11.2.3 && <1.2, transformers >=0.3.0.0 && <0.4,
94 text >=0.11.2.3 && <1.2, transformers >=0.3.0.0 && <0.4,
95− hslogger -any, jsc ==0.1.1.2
95+ hslogger -any, jsaddle ==0.1.1.2
96 type: exitcode-stdio-1.0
96 type: exitcode-stdio-1.0
97− main-is: TestJSC.hs
97+ main-is: TestJSaddle.hs
98 default-language: Haskell2010
98 default-language: Haskell2010
99 hs-source-dirs: tests
99 hs-source-dirs: tests
src/Language/Javascript/JSC.hs → src/Language/Javascript/JSaddle.hsrenamed+29−29
@@ -1,7 +1,7 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2-----------------------------------------------------------------------------
2-----------------------------------------------------------------------------
3--
3--
4−-- Module : Language.Javascript.JSC
4+-- Module : Language.Javascript.JSaddle
5-- Copyright : (c) Hamish Mackenzie
5-- Copyright : (c) Hamish Mackenzie
6-- License : MIT
6-- License : MIT
7--
7--
@@ -12,34 +12,34 @@
12-- in the webkit-javascriptcore library <https://github.com/ghcjs/webkit-javascriptcore>.
12-- in the webkit-javascriptcore library <https://github.com/ghcjs/webkit-javascriptcore>.
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.Javascript.JSC (
15+module Language.Javascript.JSaddle (
16− -- * JSC EDSL
16+ -- * JSaddle EDSL
17− -- | The 'JSC' monad gives us the context for evaluation. In keeping
17+ -- | The 'JSM' monad gives us the context for evaluation. In keeping
18 -- with JavaScript the EDSL has
18 -- with JavaScript the EDSL has
19 --
19 --
20 -- * /Weakish typing/ - type classes are used to convert to JSValueRef
20 -- * /Weakish typing/ - type classes are used to convert to JSValueRef
21 -- and JSObjectRef types
21 -- and JSObjectRef types
22 --
22 --
23− -- * /Strict evaluation/ - function in the 'JSC' monad can be passed in
23+ -- * /Strict evaluation/ - function in the 'JSM' monad can be passed in
24 -- place of a value and will evaluated and converted to JSValueRef or
24 -- place of a value and will evaluated and converted to JSValueRef or
25 -- JSObjectRef and then passed on to JavaScript
25 -- JSObjectRef and then passed on to JavaScript
26 --
26 --
27− -- JSC should be used to write wrappers for JavaScript libraries that provide
27+ -- JSaddle should be used to write wrappers for JavaScript libraries that provide
28 -- more type safety.
28 -- more type safety.
29
29
30 -- * Code Examples
30 -- * Code Examples
31 -- | The code examples in this documentation are executed with a 'runjs'
31 -- | The code examples in this documentation are executed with a 'runjs'
32− -- function that executes the example code in the JSC monad and converts
32+ -- function that executes the example code in the JSM monad and converts
33 -- the result to 'Text' with 'valToText'. It also catches unhandled
33 -- the result to 'Text' with 'valToText'. It also catches unhandled
34− -- exceptions with 'catch'. The source code can be found in tests/TestJSC.hs
34+ -- exceptions with 'catch'. The source code can be found in tests/TestJSaddle.hs
35 --
35 --
36 -- Where it makes sense code examples are given in two forms. One
36 -- Where it makes sense code examples are given in two forms. One
37 -- that uses 'eval' to run a purely JavaScript version and one that
37 -- that uses 'eval' to run a purely JavaScript version and one that
38− -- uses more of the JSC EDSL feature being demonstated.
38+ -- uses more of the JSaddle EDSL feature being demonstated.
39
39
40 -- * Calling Haskell from JavaScript
40 -- * Calling Haskell from JavaScript
41 -- | You can call back into haskell from JavaScript using 'fun' to
41 -- | You can call back into haskell from JavaScript using 'fun' to
42− -- convert a Haskell function in the JSC monad into a javascript
42+ -- convert a Haskell function in the JSM monad into a javascript
43 -- value.
43 -- value.
44
44
45 -- * JMacro Support
45 -- * JMacro Support
@@ -49,33 +49,33 @@ module Language.Javascript.JSC (
49 -- using JavaScriptCore.
49 -- using JavaScriptCore.
50
50
51 -- * GHCJS Support
51 -- * GHCJS Support
52− -- | Because it uses webkit-javascriptcore you can compile your JSC code to
52+ -- | Because it uses webkit-javascriptcore you can compile your JSaddle code to
53 -- JavaScript using GHCJS <https://github.com/ghcjs/ghcjs> and run it
53 -- JavaScript using GHCJS <https://github.com/ghcjs/ghcjs> and run it
54 -- in a web browser. Calls to the WebKitGTK+ JavaScriptCore C functions
54 -- in a web browser. Calls to the WebKitGTK+ JavaScriptCore C functions
55 -- will be replaced with JavaScript function calls.
55 -- will be replaced with JavaScript function calls.
56
56
57 -- * Modules
57 -- * Modules
58− module Language.Javascript.JSC.Monad
58+ module Language.Javascript.JSaddle.Monad
59− , module Language.Javascript.JSC.Exception
59+ , module Language.Javascript.JSaddle.Exception
60− , module Language.Javascript.JSC.Value
60+ , module Language.Javascript.JSaddle.Value
61− , module Language.Javascript.JSC.Arguments
61+ , module Language.Javascript.JSaddle.Arguments
62− , module Language.Javascript.JSC.Properties
62+ , module Language.Javascript.JSaddle.Properties
63− , module Language.Javascript.JSC.Object
63+ , module Language.Javascript.JSaddle.Object
64− , module Language.Javascript.JSC.Evaluate
64+ , module Language.Javascript.JSaddle.Evaluate
65#ifdef MIN_VERSION_jmacro
65#ifdef MIN_VERSION_jmacro
66− , module Language.Javascript.JSC.JMacro
66+ , module Language.Javascript.JSaddle.JMacro
67#endif
67#endif
68− , module Language.Javascript.JSC.String
68+ , module Language.Javascript.JSaddle.String
69) where
69) where
70
70
71−import Language.Javascript.JSC.Monad
71+import Language.Javascript.JSaddle.Monad
72−import Language.Javascript.JSC.Exception
72+import Language.Javascript.JSaddle.Exception
73−import Language.Javascript.JSC.Value
73+import Language.Javascript.JSaddle.Value
74−import Language.Javascript.JSC.Arguments
74+import Language.Javascript.JSaddle.Arguments
75−import Language.Javascript.JSC.Properties
75+import Language.Javascript.JSaddle.Properties
76−import Language.Javascript.JSC.Object
76+import Language.Javascript.JSaddle.Object
77−import Language.Javascript.JSC.Evaluate
77+import Language.Javascript.JSaddle.Evaluate
78#ifdef MIN_VERSION_jmacro
78#ifdef MIN_VERSION_jmacro
79−import Language.Javascript.JSC.JMacro
79+import Language.Javascript.JSaddle.JMacro
80#endif
80#endif
81−import Language.Javascript.JSC.String
81+import Language.Javascript.JSaddle.String
src/Language/Javascript/JSC/Arguments.hs → src/Language/Javascript/JSaddle/Arguments.hsrenamed+5−5
@@ -2,7 +2,7 @@
2{-# LANGUAGE TypeSynonymInstances #-}
2{-# LANGUAGE TypeSynonymInstances #-}
3-----------------------------------------------------------------------------
3-----------------------------------------------------------------------------
4--
4--
5−-- Module : Language.Javascript.JSC.Arguments
5+-- Module : Language.Javascript.JSaddle.Arguments
6-- Copyright : (c) Hamish Mackenzie
6-- Copyright : (c) Hamish Mackenzie
7-- License : MIT
7-- License : MIT
8--
8--
@@ -12,15 +12,15 @@
12--
12--
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.Javascript.JSC.Arguments (
15+module Language.Javascript.JSaddle.Arguments (
16 MakeArgRefs(..)
16 MakeArgRefs(..)
17) where
17) where
18
18
19−import Language.Javascript.JSC.Classes
19+import Language.Javascript.JSaddle.Classes
20 (MakeValueRef(..), MakeValueRef, MakeArgRefs(..), MakeArgRefs)
20 (MakeValueRef(..), MakeValueRef, MakeArgRefs(..), MakeArgRefs)
21−import Language.Javascript.JSC.Monad (JSC)
21+import Language.Javascript.JSaddle.Monad (JSM)
22
22
23−instance MakeArgRefs arg => MakeArgRefs (JSC arg) where
23+instance MakeArgRefs arg => MakeArgRefs (JSM arg) where
24 makeArgRefs arg = arg >>= makeArgRefs
24 makeArgRefs arg = arg >>= makeArgRefs
25
25
26instance MakeValueRef arg => MakeArgRefs [arg] where
26instance MakeValueRef arg => MakeArgRefs [arg] where
src/Language/Javascript/JSC/Classes.hs → src/Language/Javascript/JSaddle/Classes.hsrenamed+11−11
@@ -1,18 +1,18 @@
1-----------------------------------------------------------------------------
1-----------------------------------------------------------------------------
2--
2--
3−-- Module : Language.Javascript.JSC.Classes
3+-- Module : Language.Javascript.JSaddle.Classes
4-- Copyright : (c) Hamish Mackenzie
4-- Copyright : (c) Hamish Mackenzie
5-- License : MIT
5-- License : MIT
6--
6--
7-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
7-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
8--
8--
9−-- | These classes are used to make various JavaScriptCore types
9+-- | These classes are used to make various JavaScript types
10−-- out of whatever we have. Functions in jsc take these as inputs.
10+-- out of whatever we have. Functions in jsaddle take these as inputs.
11-- This alows implicit casting and eager evaluation.
11-- This alows implicit casting and eager evaluation.
12--
12--
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.Javascript.JSC.Classes (
15+module Language.Javascript.JSaddle.Classes (
16 -- * Type classes to convert Haskell data to JavaScript
16 -- * Type classes to convert Haskell data to JavaScript
17 MakeValueRef(..)
17 MakeValueRef(..)
18 , MakeStringRef(..)
18 , MakeStringRef(..)
@@ -22,14 +22,14 @@ module Language.Javascript.JSC.Classes (
22) where
22) where
23
23
24import Control.Monad.IO.Class (MonadIO)
24import Control.Monad.IO.Class (MonadIO)
25−import Language.Javascript.JSC.Types
25+import Language.Javascript.JSaddle.Types
26 (JSObjectRef, JSStringRef, JSValueRef)
26 (JSObjectRef, JSStringRef, JSValueRef)
27−import Language.Javascript.JSC.Monad (JSC)
27+import Language.Javascript.JSaddle.Monad (JSM)
28−import Language.Javascript.JSC.PropRef (JSPropRef)
28+import Language.Javascript.JSaddle.PropRef (JSPropRef)
29
29
30-- | Anything that can be used to make a JavaScript value reference
30-- | Anything that can be used to make a JavaScript value reference
31class MakeValueRef a where
31class MakeValueRef a where
32− makeValueRef :: a -> JSC JSValueRef
32+ makeValueRef :: a -> JSM JSValueRef
33
33
34-- | Anything that can be used to make a JavaScript string reference
34-- | Anything that can be used to make a JavaScript string reference
35class MakeStringRef a where
35class MakeStringRef a where
@@ -38,15 +38,15 @@ class MakeStringRef a where
38-- | Anything that can be used to make a list of JavaScript value
38-- | Anything that can be used to make a list of JavaScript value
39-- references for use as function arguments
39-- references for use as function arguments
40class MakeArgRefs this where
40class MakeArgRefs this where
41− makeArgRefs :: this -> JSC [JSValueRef]
41+ makeArgRefs :: this -> JSM [JSValueRef]
42
42
43-- | Anything that can be used to make a JavaScript object reference
43-- | Anything that can be used to make a JavaScript object reference
44class MakeObjectRef this where
44class MakeObjectRef this where
45− makeObjectRef :: this -> JSC JSObjectRef
45+ makeObjectRef :: this -> JSM JSObjectRef
46
46
47-- | Anything that can be used to make a JavaScript property reference
47-- | Anything that can be used to make a JavaScript property reference
48class MakePropRef this where
48class MakePropRef this where
49− makePropRef :: this -> JSC JSPropRef
49+ makePropRef :: this -> JSM JSPropRef
50
50
51
51
52
52
src/Language/Javascript/JSC/Evaluate.hs → src/Language/Javascript/JSaddle/Evaluate.hsrenamed+12−12
@@ -4,7 +4,7 @@
4#endif
4#endif
5-----------------------------------------------------------------------------
5-----------------------------------------------------------------------------
6--
6--
7−-- Module : Language.Javascript.JSC.Evaluate
7+-- Module : Language.Javascript.JSaddle.Evaluate
8-- Copyright : (c) Hamish Mackenzie
8-- Copyright : (c) Hamish Mackenzie
9-- License : MIT
9-- License : MIT
10--
10--
@@ -15,14 +15,14 @@
15--
15--
16-----------------------------------------------------------------------------
16-----------------------------------------------------------------------------
17
17
18−module Language.Javascript.JSC.Evaluate (
18+module Language.Javascript.JSaddle.Evaluate (
19 evaluateScript
19 evaluateScript
20 , eval
20 , eval
21) where
21) where
22
22
23import Control.Monad.Trans.Reader (ask)
23import Control.Monad.Trans.Reader (ask)
24import Control.Monad.IO.Class (MonadIO(..))
24import Control.Monad.IO.Class (MonadIO(..))
25−import Language.Javascript.JSC.Types
25+import Language.Javascript.JSaddle.Types
26 (JSStringRef, JSValueRef, JSObjectRef,
26 (JSStringRef, JSValueRef, JSObjectRef,
27 JSValueRefRef)
27 JSValueRefRef)
28#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
28#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
@@ -32,25 +32,25 @@ import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSBase
32 (jsevaluatescript)
32 (jsevaluatescript)
33import Foreign (nullPtr)
33import Foreign (nullPtr)
34#endif
34#endif
35−import Language.Javascript.JSC.Exception (rethrow)
35+import Language.Javascript.JSaddle.Exception (rethrow)
36−import Language.Javascript.JSC.Value ()
36+import Language.Javascript.JSaddle.Value ()
37−import Language.Javascript.JSC.Object ()
37+import Language.Javascript.JSaddle.Object ()
38−import Language.Javascript.JSC.Classes
38+import Language.Javascript.JSaddle.Classes
39 (MakeObjectRef(..), MakeStringRef(..))
39 (MakeObjectRef(..), MakeStringRef(..))
40−import Language.Javascript.JSC.Monad (JSC)
40+import Language.Javascript.JSaddle.Monad (JSM)
41
41
42
42
43-- | Evaluates a script (like eval in java script). Unlike 'eval' this function lets you
43-- | Evaluates a script (like eval in java script). Unlike 'eval' this function lets you
44-- specify a source URL and starting line number for beter error information.
44-- specify a source URL and starting line number for beter error information.
45--
45--
46−-- >>> testJSC $ (evaluateScript "\n\n{" global "FileName" 53 >>= valToText) `catch` \(JSException e) -> array (e,e!"sourceURL", e!"line") >>= valToText
46+-- >>> testJSaddle $ (evaluateScript "\n\n{" global "FileName" 53 >>= valToText) `catch` \(JSException e) -> array (e,e!"sourceURL", e!"line") >>= valToText
47-- SyntaxError: Expected token '}',FileName,55
47-- SyntaxError: Expected token '}',FileName,55
48evaluateScript :: (MakeStringRef script, MakeObjectRef this, MakeStringRef url)
48evaluateScript :: (MakeStringRef script, MakeObjectRef this, MakeStringRef url)
49 => script -- ^ JavaScript to evaluate
49 => script -- ^ JavaScript to evaluate
50 -> this
50 -> this
51 -> url
51 -> url
52 -> Int -- ^ The Line number of the first line of the script
52 -> Int -- ^ The Line number of the first line of the script
53− -> JSC JSValueRef
53+ -> JSM JSValueRef
54#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
54#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
55evaluateScript script this url line = liftIO $ js_eval (makeStringRef script)
55evaluateScript script this url line = liftIO $ js_eval (makeStringRef script)
56foreign import javascript unsafe "$r = eval(s);"
56foreign import javascript unsafe "$r = eval(s);"
@@ -66,11 +66,11 @@ evaluateScript = undefined
66
66
67-- | Evaluates a script (like eval in java script)
67-- | Evaluates a script (like eval in java script)
68--
68--
69−-- >>> testJSC $ eval "1+1"
69+-- >>> testJSaddle $ eval "1+1"
70-- 2
70-- 2
71eval :: MakeStringRef script
71eval :: MakeStringRef script
72 => script -- ^ JavaScript to evaluate
72 => script -- ^ JavaScript to evaluate
73− -> JSC JSValueRef
73+ -> JSM JSValueRef
74#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
74#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
75eval script = evaluateScript script (nullRef::JSObjectRef) (nullRef::JSStringRef) 1
75eval script = evaluateScript script (nullRef::JSObjectRef) (nullRef::JSStringRef) 1
76#else
76#else
src/Language/Javascript/JSC/Exception.hs → src/Language/Javascript/JSaddle/Exception.hsrenamed+5−5
@@ -1,7 +1,7 @@
1{-# LANGUAGE DeriveDataTypeable #-}
1{-# LANGUAGE DeriveDataTypeable #-}
2-----------------------------------------------------------------------------
2-----------------------------------------------------------------------------
3--
3--
4−-- Module : Language.Javascript.JSC.Exception
4+-- Module : Language.Javascript.JSaddle.Exception
5-- Copyright : (c) Hamish Mackenzie
5-- Copyright : (c) Hamish Mackenzie
6-- License : MIT
6-- License : MIT
7--
7--
@@ -11,16 +11,16 @@
11--
11--
12-----------------------------------------------------------------------------
12-----------------------------------------------------------------------------
13
13
14−module Language.Javascript.JSC.Exception (
14+module Language.Javascript.JSaddle.Exception (
15 JSException(..)
15 JSException(..)
16 , rethrow
16 , rethrow
17) where
17) where
18
18
19import qualified Control.Exception as E (throwIO, Exception)
19import qualified Control.Exception as E (throwIO, Exception)
20−import Language.Javascript.JSC.Types
20+import Language.Javascript.JSaddle.Types
21 (JSValueRefRef, JSValueRef)
21 (JSValueRefRef, JSValueRef)
22import Data.Typeable (Typeable)
22import Data.Typeable (Typeable)
23−import Language.Javascript.JSC.Monad (catchval, JSC)
23+import Language.Javascript.JSaddle.Monad (catchval, JSM)
24import Control.Monad.IO.Class (MonadIO(..))
24import Control.Monad.IO.Class (MonadIO(..))
25import Data.Text (Text)
25import Data.Text (Text)
26
26
@@ -29,7 +29,7 @@ data JSException = JSException JSValueRef deriving (Show, Typeable)
29instance E.Exception JSException
29instance E.Exception JSException
30
30
31-- | Catch JavaScript exceptions and rethrow Haskell ones
31-- | Catch JavaScript exceptions and rethrow Haskell ones
32−rethrow :: (JSValueRefRef -> JSC a) -> JSC a
32+rethrow :: (JSValueRefRef -> JSM a) -> JSM a
33rethrow f = f `catchval` \e -> do
33rethrow f = f `catchval` \e -> do
34 liftIO . E.throwIO $ JSException e
34 liftIO . E.throwIO $ JSException e
35
35
src/Language/Javascript/JSC/JMacro.hs → src/Language/Javascript/JSaddle/JMacro.hsrenamed+5−5
@@ -1,18 +1,18 @@
1{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
1{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
2-----------------------------------------------------------------------------
2-----------------------------------------------------------------------------
3--
3--
4−-- Module : Language.Javascript.JSC.JMacro
4+-- Module : Language.Javascript.JSaddle.JMacro
5-- Copyright : (c) Hamish Mackenzie
5-- Copyright : (c) Hamish Mackenzie
6-- License : MIT
6-- License : MIT
7--
7--
8-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
8-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
9--
9--
10-- | Helper function to make it easy to embed JMacro in your code and
10-- | Helper function to make it easy to embed JMacro in your code and
11−-- use it from JSC
11+-- use it from JSaddle
12--
12--
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.Javascript.JSC.JMacro (
15+module Language.Javascript.JSaddle.JMacro (
16 evalJM
16 evalJM
17 , evalJME
17 , evalJME
18) where
18) where
@@ -29,7 +29,7 @@ evalJME = jmacroE {quoteExp = quoteEvalJME}
29
29
30quoteEvalJME :: String -> ExpQ
30quoteEvalJME :: String -> ExpQ
31quoteEvalJME s =
31quoteEvalJME s =
32− appE (varE 'return) [|AppE (VarE $ mkName "Language.Javascript.JSC.eval")
32+ appE (varE 'return) [|AppE (VarE $ mkName "Language.Javascript.JSaddle.eval")
33 (LitE . StringL . show $ renderJs $(quoteExp jmacroE s))|]
33 (LitE . StringL . show $ renderJs $(quoteExp jmacroE s))|]
34
34
35-- | Quasi quoter that creates a JavaScript string from JMacro statement
35-- | Quasi quoter that creates a JavaScript string from JMacro statement
@@ -39,5 +39,5 @@ evalJM = jmacro {quoteExp = quoteEvalJM}
39
39
40quoteEvalJM :: String -> ExpQ
40quoteEvalJM :: String -> ExpQ
41quoteEvalJM s =
41quoteEvalJM s =
42− appE (varE 'return) [|AppE (VarE $ mkName "Language.Javascript.JSC.eval")
42+ appE (varE 'return) [|AppE (VarE $ mkName "Language.Javascript.JSaddle.eval")
43 (LitE . StringL . show $ renderJs $(quoteExp jmacro s))|]
43 (LitE . StringL . show $ renderJs $(quoteExp jmacro s))|]
src/Language/Javascript/JSC/Monad.hs → src/Language/Javascript/JSaddle/Monad.hsrenamed+20−20
@@ -1,24 +1,24 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2-----------------------------------------------------------------------------
2-----------------------------------------------------------------------------
3--
3--
4−-- Module : Language.Javascript.JSC.Monad
4+-- Module : Language.Javascript.JSaddle.Monad
5-- Copyright : (c) Hamish Mackenzie
5-- Copyright : (c) Hamish Mackenzie
6-- License : MIT
6-- License : MIT
7--
7--
8-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
8-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
9--
9--
10−-- | JSC monad keeps track of the JavaScript context
10+-- | JSM monad keeps track of the JavaScript context
11--
11--
12-----------------------------------------------------------------------------
12-----------------------------------------------------------------------------
13
13
14−module Language.Javascript.JSC.Monad (
14+module Language.Javascript.JSaddle.Monad (
15 -- * Types
15 -- * Types
16− JSC(..)
16+ JSM(..)
17 , JSContextRef
17 , JSContextRef
18
18
19− -- * Running JSC given a DOM Window
19+ -- * Running JSaddle given a DOM Window
20− , runJSC
20+ , runJSaddle
21− , runJSC_
21+ , runJSaddle_
22
22
23 -- * Exception Handling
23 -- * Exception Handling
24 , catchval
24 , catchval
@@ -27,7 +27,7 @@ module Language.Javascript.JSC.Monad (
27
27
28import Prelude hiding (catch)
28import Prelude hiding (catch)
29import Control.Monad.Trans.Reader (runReaderT, ask, ReaderT(..))
29import Control.Monad.Trans.Reader (runReaderT, ask, ReaderT(..))
30−import Language.Javascript.JSC.Types
30+import Language.Javascript.JSaddle.Types
31 (JSValueRefRef, JSValueRef, JSContextRef)
31 (JSValueRefRef, JSValueRef, JSContextRef)
32import Control.Monad.IO.Class (MonadIO(..))
32import Control.Monad.IO.Class (MonadIO(..))
33#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
33#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
@@ -45,18 +45,18 @@ import Graphics.UI.Gtk.WebKit.JavaScriptCore.WebFrame
45#endif
45#endif
46import qualified Control.Exception as E (Exception, catch)
46import qualified Control.Exception as E (Exception, catch)
47
47
48−-- | The @JSC@ monad keeps track of the JavaScript context.
48+-- | The @JSM@ monad keeps track of the JavaScript context.
49--
49--
50−-- Given a @JSC@ function and a 'JSContextRef' you can run the
50+-- Given a @JSM@ function and a 'JSContextRef' you can run the
51-- function like this...
51-- function like this...
52--
52--
53−-- > runReaderT jscFunction javaScriptContext
53+-- > runReaderT jsmFunction javaScriptContext
54--
54--
55−-- For an example of how to set up WebKitGTK+ see tests/TestJSC.hs
55+-- For an example of how to set up WebKitGTK+ see tests/TestJSaddle.hs
56−type JSC = ReaderT JSContextRef IO
56+type JSM = ReaderT JSContextRef IO
57
57
58-- | Wrapped version of 'E.catch' that runs in a MonadIO that works
58-- | Wrapped version of 'E.catch' that runs in a MonadIO that works
59−-- a bit better with 'JSC'
59+-- a bit better with 'JSM'
60catch :: (MonadIO m, E.Exception e)
60catch :: (MonadIO m, E.Exception e)
61 => ReaderT r IO b
61 => ReaderT r IO b
62 -> (e -> ReaderT r IO b)
62 -> (e -> ReaderT r IO b)
@@ -67,7 +67,7 @@ t `catch` c = do
67
67
68-- | Handle JavaScriptCore functions that take a JSValueRefRef in order
68-- | Handle JavaScriptCore functions that take a JSValueRefRef in order
69-- to throw exceptions.
69-- to throw exceptions.
70−catchval :: (JSValueRefRef -> JSC a) -> (JSValueRef -> JSC a) -> JSC a
70+catchval :: (JSValueRefRef -> JSM a) -> (JSValueRef -> JSM a) -> JSM a
71catchval f catcher = do
71catchval f catcher = do
72#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
72#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
73 pexc <- liftIO $ newArray
73 pexc <- liftIO $ newArray
@@ -88,13 +88,13 @@ catchval f catcher = do
88#endif
88#endif
89
89
90#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
90#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
91−runJSC :: w -> JSC a -> IO a
91+runJSaddle :: w -> JSM a -> IO a
92−runJSC _ f = runReaderT f ()
92+runJSaddle _ f = runReaderT f ()
93#else
93#else
94−runJSC :: WebView -> JSC a -> IO a
94+runJSaddle :: WebView -> JSM a -> IO a
95−runJSC webView f = do
95+runJSaddle webView f = do
96 gctxt <- webViewGetMainFrame webView >>= webFrameGetGlobalContext
96 gctxt <- webViewGetMainFrame webView >>= webFrameGetGlobalContext
97 runReaderT f gctxt
97 runReaderT f gctxt
98#endif
98#endif
99
99
100−runJSC_ w f = runJSC w f >> return ()
100+runJSaddle_ w f = runJSaddle w f >> return ()
src/Language/Javascript/JSC/Object.hs → src/Language/Javascript/JSaddle/Object.hsrenamed+59−59
@@ -9,7 +9,7 @@
9#endif
9#endif
10-----------------------------------------------------------------------------
10-----------------------------------------------------------------------------
11--
11--
12−-- Module : Language.Javascript.JSC.Object
12+-- Module : Language.Javascript.JSaddle.Object
13-- Copyright : (c) Hamish Mackenzie
13-- Copyright : (c) Hamish Mackenzie
14-- License : MIT
14-- License : MIT
15--
15--
@@ -19,7 +19,7 @@
19--
19--
20-----------------------------------------------------------------------------
20-----------------------------------------------------------------------------
21
21
22−module Language.Javascript.JSC.Object (
22+module Language.Javascript.JSaddle.Object (
23 JSObjectRef
23 JSObjectRef
24 , MakeObjectRef(..)
24 , MakeObjectRef(..)
25
25
@@ -75,7 +75,7 @@ module Language.Javascript.JSC.Object (
75) where
75) where
76
76
77import Prelude hiding ((!!))
77import Prelude hiding ((!!))
78−import Language.Javascript.JSC.Types
78+import Language.Javascript.JSaddle.Types
79 (JSPropertyNameArrayRef, JSStringRef, JSObjectRef, JSValueRefRef,
79 (JSPropertyNameArrayRef, JSStringRef, JSObjectRef, JSValueRefRef,
80 JSValueRef, JSContextRef, Index)
80 JSValueRef, JSContextRef, Index)
81import Foreign.C.Types (CSize(..), CULong(..), CUInt(..))
81import Foreign.C.Types (CSize(..), CULong(..), CUInt(..))
@@ -99,46 +99,46 @@ import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSContextRef
99 (jscontextgetglobalobject)
99 (jscontextgetglobalobject)
100import Foreign (peekArray, nullPtr, withArrayLen)
100import Foreign (peekArray, nullPtr, withArrayLen)
101#endif
101#endif
102−import Language.Javascript.JSC.Exception (rethrow)
102+import Language.Javascript.JSaddle.Exception (rethrow)
103−import Language.Javascript.JSC.Value
103+import Language.Javascript.JSaddle.Value
104 (JSUndefined, valMakeUndefined, valToObject)
104 (JSUndefined, valMakeUndefined, valToObject)
105−import Language.Javascript.JSC.PropRef (JSPropRef(..))
105+import Language.Javascript.JSaddle.PropRef (JSPropRef(..))
106−import Language.Javascript.JSC.Classes
106+import Language.Javascript.JSaddle.Classes
107 (MakeValueRef(..), MakeStringRef(..), MakeArgRefs(..), MakePropRef(..),
107 (MakeValueRef(..), MakeStringRef(..), MakeArgRefs(..), MakePropRef(..),
108 MakeObjectRef(..))
108 MakeObjectRef(..))
109−import Language.Javascript.JSC.Monad
109+import Language.Javascript.JSaddle.Monad
110− (JSC)
110+ (JSM)
111import Control.Monad.Trans.Reader (runReaderT, ask)
111import Control.Monad.Trans.Reader (runReaderT, ask)
112import Control.Monad.IO.Class (MonadIO(..))
112import Control.Monad.IO.Class (MonadIO(..))
113import qualified Control.Exception as E (catch)
113import qualified Control.Exception as E (catch)
114import Control.Exception (SomeException)
114import Control.Exception (SomeException)
115import qualified Data.Text as T (pack)
115import qualified Data.Text as T (pack)
116import Foreign.Storable (Storable(..))
116import Foreign.Storable (Storable(..))
117−import Language.Javascript.JSC.Properties
117+import Language.Javascript.JSaddle.Properties
118import Control.Lens
118import Control.Lens
119 (IndexPreservingGetter, to, (^.))
119 (IndexPreservingGetter, to, (^.))
120−import Language.Javascript.JSC.String (textToStr)
120+import Language.Javascript.JSaddle.String (textToStr)
121
121
122-- | If we already have a JSObjectRef we are fine
122-- | If we already have a JSObjectRef we are fine
123instance MakeObjectRef JSObjectRef where
123instance MakeObjectRef JSObjectRef where
124 makeObjectRef = return
124 makeObjectRef = return
125
125
126−-- | JSObjectRef can be made by evaluating a function in 'JSC' as long
126+-- | JSObjectRef can be made by evaluating a function in 'JSM' as long
127-- as it returns something we can make into a JSObjectRef.
127-- as it returns something we can make into a JSObjectRef.
128−instance MakeObjectRef v => MakeObjectRef (JSC v) where
128+instance MakeObjectRef v => MakeObjectRef (JSM v) where
129 makeObjectRef v = v >>= makeObjectRef
129 makeObjectRef v = v >>= makeObjectRef
130
130
131-- | Lookup a property based on its name. This function just constructs a JSPropRef
131-- | Lookup a property based on its name. This function just constructs a JSPropRef
132-- the lookup is delayed until we use the JSPropRef. This makes it a bit lazy compared
132-- the lookup is delayed until we use the JSPropRef. This makes it a bit lazy compared
133-- to JavaScript's @.@ operator.
133-- to JavaScript's @.@ operator.
134--
134--
135−-- >>> testJSC $ eval "'Hello World'.length"
135+-- >>> testJSaddle $ eval "'Hello World'.length"
136−-- >>> testJSC $ val "Hello World" ! "length"
136+-- >>> testJSaddle $ val "Hello World" ! "length"
137-- 11
137-- 11
138(!) :: (MakeObjectRef this, MakeStringRef name)
138(!) :: (MakeObjectRef this, MakeStringRef name)
139 => this -- ^ Object to look on
139 => this -- ^ Object to look on
140 -> name -- ^ Name of the property to find
140 -> name -- ^ Name of the property to find
141− -> JSC JSPropRef -- ^ Property reference
141+ -> JSM JSPropRef -- ^ Property reference
142this ! name = do
142this ! name = do
143 rthis <- makeObjectRef this
143 rthis <- makeObjectRef this
144 return (JSPropRef rthis rname)
144 return (JSPropRef rthis rname)
@@ -149,13 +149,13 @@ this ! name = do
149-- the lookup is delayed until we use the JSPropRef. This makes it a bit lazy compared
149-- the lookup is delayed until we use the JSPropRef. This makes it a bit lazy compared
150-- to JavaScript's @[]@ operator.
150-- to JavaScript's @[]@ operator.
151--
151--
152−-- >>> testJSC $ eval "'Hello World'[6]"
152+-- >>> testJSaddle $ eval "'Hello World'[6]"
153−-- >>> testJSC $ val "Hello World" !! 6
153+-- >>> testJSaddle $ val "Hello World" !! 6
154-- W
154-- W
155(!!) :: (MakeObjectRef this)
155(!!) :: (MakeObjectRef this)
156 => this -- ^ Object to look on
156 => this -- ^ Object to look on
157 -> Index -- ^ Index of the property to lookup
157 -> Index -- ^ Index of the property to lookup
158− -> JSC JSPropRef -- ^ Property reference
158+ -> JSM JSPropRef -- ^ Property reference
159this !! index = do
159this !! index = do
160 rthis <- makeObjectRef this
160 rthis <- makeObjectRef this
161 return (JSPropIndexRef rthis index)
161 return (JSPropIndexRef rthis index)
@@ -164,22 +164,22 @@ this !! index = do
164--
164--
165-- > js name = to (!name)
165-- > js name = to (!name)
166--
166--
167−-- >>> testJSC $ eval "'Hello World'.length"
167+-- >>> testJSaddle $ eval "'Hello World'.length"
168−-- >>> testJSC $ val "Hello World" ^. js "length"
168+-- >>> testJSaddle $ val "Hello World" ^. js "length"
169-- 11
169-- 11
170js :: (MakeObjectRef s, MakeStringRef name)
170js :: (MakeObjectRef s, MakeStringRef name)
171 => name -- ^ Name of the property to find
171 => name -- ^ Name of the property to find
172− -> IndexPreservingGetter s (JSC JSPropRef)
172+ -> IndexPreservingGetter s (JSM JSPropRef)
173js name = to (!name)
173js name = to (!name)
174
174
175-- | Java script function applications have this type
175-- | Java script function applications have this type
176−type JSF = MakeObjectRef o => IndexPreservingGetter o (JSC JSValueRef)
176+type JSF = MakeObjectRef o => IndexPreservingGetter o (JSM JSValueRef)
177
177
178-- | Handy way to call a function
178-- | Handy way to call a function
179--
179--
180-- > jsf name = js name . to (# args)
180-- > jsf name = js name . to (# args)
181--
181--
182−-- >>> testJSC $ val "Hello World" ^. jsf "indexOf" ["World"]
182+-- >>> testJSaddle $ val "Hello World" ^. jsf "indexOf" ["World"]
183-- 6
183-- 6
184jsf :: (MakeStringRef name, MakeArgRefs args) => name -> args -> JSF
184jsf :: (MakeStringRef name, MakeArgRefs args) => name -> args -> JSF
185jsf name args = function . to (# args)
185jsf name args = function . to (# args)
@@ -190,7 +190,7 @@ jsf name args = function . to (# args)
190--
190--
191-- > js0 name = jsf name ()
191-- > js0 name = jsf name ()
192--
192--
193−-- >>> testJSC $ val "Hello World" ^. js0 "toLowerCase"
193+-- >>> testJSaddle $ val "Hello World" ^. js0 "toLowerCase"
194-- hello world
194-- hello world
195js0 :: (MakeStringRef name) => name -> JSF
195js0 :: (MakeStringRef name) => name -> JSF
196js0 name = jsf name ()
196js0 name = jsf name ()
@@ -199,7 +199,7 @@ js0 name = jsf name ()
199--
199--
200-- > js1 name a0 = jsf name [a0]
200-- > js1 name a0 = jsf name [a0]
201--
201--
202−-- >>> testJSC $ val "Hello World" ^. js1 "indexOf" "World"
202+-- >>> testJSaddle $ val "Hello World" ^. js1 "indexOf" "World"
203-- 6
203-- 6
204js1 :: (MakeStringRef name, MakeValueRef a0) => name -> a0 -> JSF
204js1 :: (MakeStringRef name, MakeValueRef a0) => name -> a0 -> JSF
205js1 name a0 = jsf name [a0]
205js1 name a0 = jsf name [a0]
@@ -228,20 +228,20 @@ js5 name a0 a1 a2 a3 a4 = jsf name (a0, a1, a2, a3, a4)
228
228
229-- | Handy way to get and hold onto a reference top level javascript
229-- | Handy way to get and hold onto a reference top level javascript
230--
230--
231−-- >>> testJSC $ eval "w = console; w.log('Hello World')"
231+-- >>> testJSaddle $ eval "w = console; w.log('Hello World')"
232−-- >>> testJSC $ do w <- jsg "console"; w ^. js "log" # ["Hello World"]
232+-- >>> testJSaddle $ do w <- jsg "console"; w ^. js "log" # ["Hello World"]
233-- 11
233-- 11
234−jsg :: MakeStringRef a => a -> JSC JSPropRef
234+jsg :: MakeStringRef a => a -> JSM JSPropRef
235jsg name = global ! name
235jsg name = global ! name
236
236
237-- | Call a JavaScript function
237-- | Call a JavaScript function
238--
238--
239−-- >>> testJSC $ eval "'Hello World'.indexOf('World')"
239+-- >>> testJSaddle $ eval "'Hello World'.indexOf('World')"
240−-- >>> testJSC $ val "Hello World" ! "indexOf" # ["World"]
240+-- >>> testJSaddle $ val "Hello World" ! "indexOf" # ["World"]
241-- 6
241-- 6
242infixr 2 #
242infixr 2 #
243(#) :: (MakePropRef prop, MakeArgRefs args)
243(#) :: (MakePropRef prop, MakeArgRefs args)
244− => prop -> args -> JSC JSValueRef
244+ => prop -> args -> JSM JSValueRef
245prop # args = do
245prop # args = do
246 rprop <- makePropRef prop
246 rprop <- makePropRef prop
247 (this, f) <- objGetProperty' rprop
247 (this, f) <- objGetProperty' rprop
@@ -249,14 +249,14 @@ prop # args = do
249
249
250-- | Call a JavaScript function
250-- | Call a JavaScript function
251--
251--
252−-- >>> testJSC $ eval "var j = {}; j.x = 1; j.x"
252+-- >>> testJSaddle $ eval "var j = {}; j.x = 1; j.x"
253−-- >>> testJSC $ do {j <- eval "({})"; j!"x" <# 1; j!"x"}
253+-- >>> testJSaddle $ do {j <- eval "({})"; j!"x" <# 1; j!"x"}
254-- 1
254-- 1
255infixr 0 <#
255infixr 0 <#
256(<#) :: (MakePropRef prop, MakeValueRef val)
256(<#) :: (MakePropRef prop, MakeValueRef val)
257 => prop -- ^ Property to set
257 => prop -- ^ Property to set
258 -> val -- ^ Value to set it to
258 -> val -- ^ Value to set it to
259− -> JSC JSPropRef -- ^ Reference to the property set
259+ -> JSM JSPropRef -- ^ Reference to the property set
260prop <# val = do
260prop <# val = do
261 p <- makePropRef prop
261 p <- makePropRef prop
262 objSetProperty p val
262 objSetProperty p val
@@ -264,23 +264,23 @@ prop <# val = do
264
264
265-- | Use this to create a new JavaScript object
265-- | Use this to create a new JavaScript object
266--
266--
267−-- >>> testJSC $ new "Date" (2013, 1, 1)
267+-- >>> testJSaddle $ new "Date" (2013, 1, 1)
268-- Fri Feb 01 2013 00:00:00 GMT+1300 (NZDT)
268-- Fri Feb 01 2013 00:00:00 GMT+1300 (NZDT)
269new :: (MakeObjectRef constructor, MakeArgRefs args)
269new :: (MakeObjectRef constructor, MakeArgRefs args)
270 => constructor
270 => constructor
271 -> args
271 -> args
272− -> JSC JSValueRef
272+ -> JSM JSValueRef
273new constructor args = do
273new constructor args = do
274 f <- makeObjectRef constructor
274 f <- makeObjectRef constructor
275 rethrow $ objCallAsConstructor f args
275 rethrow $ objCallAsConstructor f args
276
276
277-- | Call function with a given @this@. In most cases you should use '#'.
277-- | Call function with a given @this@. In most cases you should use '#'.
278--
278--
279−-- >>> testJSC $ eval "(function(){return this;}).apply('Hello', [])"
279+-- >>> testJSaddle $ eval "(function(){return this;}).apply('Hello', [])"
280−-- >>> testJSC $ do { test <- eval "(function(){return this;})"; call test (val "Hello") () }
280+-- >>> testJSaddle $ do { test <- eval "(function(){return this;})"; call test (val "Hello") () }
281-- Hello
281-- Hello
282call :: (MakeObjectRef function, MakeObjectRef this, MakeArgRefs args)
282call :: (MakeObjectRef function, MakeObjectRef this, MakeArgRefs args)
283− => function -> this -> args -> JSC JSValueRef
283+ => function -> this -> args -> JSM JSValueRef
284call function this args = do
284call function this args = do
285 rfunction <- makeObjectRef function
285 rfunction <- makeObjectRef function
286 rthis <- makeObjectRef this
286 rthis <- makeObjectRef this
@@ -288,10 +288,10 @@ call function this args = do
288
288
289-- | Make an empty object using the default constuctor
289-- | Make an empty object using the default constuctor
290--
290--
291−-- >>> testJSC $ eval "var a = {}; a.x = 'Hello'; a.x"
291+-- >>> testJSaddle $ eval "var a = {}; a.x = 'Hello'; a.x"
292−-- >>> testJSC $ do { a <- obj; a ^. js "x" <# "Hello"; a ^. js "x" }
292+-- >>> testJSaddle $ do { a <- obj; a ^. js "x" <# "Hello"; a ^. js "x" }
293-- Hello
293-- Hello
294−obj :: JSC JSObjectRef
294+obj :: JSM JSObjectRef
295#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
295#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
296obj = liftIO $ newObj
296obj = liftIO $ newObj
297#else
297#else
@@ -304,7 +304,7 @@ obj = do
304type JSCallAsFunction = JSValueRef -- ^ Function object
304type JSCallAsFunction = JSValueRef -- ^ Function object
305 -> JSValueRef -- ^ this
305 -> JSValueRef -- ^ this
306 -> [JSValueRef] -- ^ Function arguments
306 -> [JSValueRef] -- ^ Function arguments
307− -> JSC JSUndefined -- ^ Only 'JSUndefined' can be returned because
307+ -> JSM JSUndefined -- ^ Only 'JSUndefined' can be returned because
308 -- the function may need to be executed in a
308 -- the function may need to be executed in a
309 -- different thread. If you need to get a
309 -- different thread. If you need to get a
310 -- value out pass in a continuation function
310 -- value out pass in a continuation function
@@ -313,8 +313,8 @@ type JSCallAsFunction = JSValueRef -- ^ Function object
313-- | Short hand @::JSCallAsFunction@ so a haskell function can be passed to
313-- | Short hand @::JSCallAsFunction@ so a haskell function can be passed to
314-- a to a JavaScipt one.
314-- a to a JavaScipt one.
315--
315--
316−-- >>> testJSC $ eval "(function(f) {f('Hello');})(function (a) {console.log(a)})"
316+-- >>> testJSaddle $ eval "(function(f) {f('Hello');})(function (a) {console.log(a)})"
317−-- >>> testJSC $ call (eval "(function(f) {f('Hello');})") global [fun $ \ _ _ args -> valToText (head args) >>= (liftIO . putStrLn . T.unpack) ]
317+-- >>> testJSaddle $ call (eval "(function(f) {f('Hello');})") global [fun $ \ _ _ args -> valToText (head args) >>= (liftIO . putStrLn . T.unpack) ]
318-- Hello
318-- Hello
319-- undefined
319-- undefined
320fun :: JSCallAsFunction -> JSCallAsFunction
320fun :: JSCallAsFunction -> JSCallAsFunction
@@ -329,7 +329,7 @@ foreign import ccall "wrapper"
329function :: MakeStringRef name
329function :: MakeStringRef name
330 => name -- ^ Name of the function
330 => name -- ^ Name of the function
331 -> JSCallAsFunction -- ^ Haskell function to call
331 -> JSCallAsFunction -- ^ Haskell function to call
332− -> JSC JSObjectRef -- ^ Returns a JavaScript function object that will
332+ -> JSM JSObjectRef -- ^ Returns a JavaScript function object that will
333 -- call the Haskell one when it is called
333 -- call the Haskell one when it is called
334#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
334#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
335function name f = liftIO $ do
335function name f = liftIO $ do
@@ -376,7 +376,7 @@ instance MakeArgRefs JSCallAsFunction where
376#endif
376#endif
377 return [rarg]
377 return [rarg]
378
378
379−makeArray :: MakeArgRefs args => args -> JSValueRefRef -> JSC JSObjectRef
379+makeArray :: MakeArgRefs args => args -> JSValueRefRef -> JSM JSObjectRef
380#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
380#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
381makeArray args exceptions = makeArgRefs args >>= liftM castRef . liftIO . toArray
381makeArray args exceptions = makeArgRefs args >>= liftM castRef . liftIO . toArray
382#else
382#else
@@ -389,17 +389,17 @@ makeArray args exceptions = do
389
389
390-- | Make an JavaScript array from a list of values
390-- | Make an JavaScript array from a list of values
391--
391--
392−-- >>> testJSC $ eval "['Hello', 'World'][1]"
392+-- >>> testJSaddle $ eval "['Hello', 'World'][1]"
393−-- >>> testJSC $ array ["Hello", "World"] !! 1
393+-- >>> testJSaddle $ array ["Hello", "World"] !! 1
394-- World
394-- World
395−-- >>> testJSC $ eval "['Hello', null, undefined, true, 1]"
395+-- >>> testJSaddle $ eval "['Hello', null, undefined, true, 1]"
396−-- >>> testJSC $ array ("Hello", JSNull, (), True, 1.0::Double)
396+-- >>> testJSaddle $ array ("Hello", JSNull, (), True, 1.0::Double)
397-- Hello,,,true,1
397-- Hello,,,true,1
398−array :: MakeArgRefs args => args -> JSC JSObjectRef
398+array :: MakeArgRefs args => args -> JSM JSObjectRef
399array = rethrow . makeArray
399array = rethrow . makeArray
400
400
401-- | JavaScript's global object
401-- | JavaScript's global object
402−global :: JSC JSObjectRef
402+global :: JSM JSObjectRef
403#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
403#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
404global = liftIO js_window
404global = liftIO js_window
405foreign import javascript unsafe "$r = window"
405foreign import javascript unsafe "$r = window"
@@ -412,7 +412,7 @@ global = undefined
412
412
413-- | Get an array containing the property names present on a given object
413-- | Get an array containing the property names present on a given object
414#if (!defined(ghcjs_HOST_OS) || !defined(USE_JAVASCRIPTFFI)) && defined(USE_WEBKIT)
414#if (!defined(ghcjs_HOST_OS) || !defined(USE_JAVASCRIPTFFI)) && defined(USE_WEBKIT)
415−copyPropertyNames :: MakeObjectRef this => this -> JSC JSPropertyNameArrayRef
415+copyPropertyNames :: MakeObjectRef this => this -> JSM JSPropertyNameArrayRef
416copyPropertyNames this = do
416copyPropertyNames this = do
417 gctxt <- ask
417 gctxt <- ask
418 rthis <- makeObjectRef this
418 rthis <- makeObjectRef this
@@ -434,7 +434,7 @@ propertyNamesList names = do
434#endif
434#endif
435
435
436-- | Get a list containing the property names present on a given object
436-- | Get a list containing the property names present on a given object
437−propertyNames :: MakeObjectRef this => this -> JSC [JSStringRef]
437+propertyNames :: MakeObjectRef this => this -> JSM [JSStringRef]
438#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
438#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
439propertyNames this = makeObjectRef this >>= liftIO . js_propertyNames >>= liftIO . fromArray
439propertyNames this = makeObjectRef this >>= liftIO . js_propertyNames >>= liftIO . fromArray
440foreign import javascript unsafe "$r = []; h$forIn($1, function(n){$r.push(n);})"
440foreign import javascript unsafe "$r = []; h$forIn($1, function(n){$r.push(n);})"
@@ -446,7 +446,7 @@ propertyNames = undefined
446#endif
446#endif
447
447
448-- | Get a list containing references to all the properties present on a given object
448-- | Get a list containing references to all the properties present on a given object
449−properties :: MakeObjectRef this => this -> JSC [JSPropRef]
449+properties :: MakeObjectRef this => this -> JSM [JSPropRef]
450properties this = propertyNames this >>= mapM (this !)
450properties this = propertyNames this >>= mapM (this !)
451
451
452-- | Call a JavaScript object as function. Consider using '#'.
452-- | Call a JavaScript object as function. Consider using '#'.
@@ -455,7 +455,7 @@ objCallAsFunction :: MakeArgRefs args
455 -> JSObjectRef
455 -> JSObjectRef
456 -> args
456 -> args
457 -> JSValueRefRef
457 -> JSValueRefRef
458− -> JSC JSValueRef
458+ -> JSM JSValueRef
459#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
459#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
460objCallAsFunction function this args exceptions = do
460objCallAsFunction function this args exceptions = do
461 rargs <- makeArgRefs args >>= liftIO . toArray
461 rargs <- makeArgRefs args >>= liftIO . toArray
@@ -477,7 +477,7 @@ objCallAsConstructor :: MakeArgRefs args
477 => JSObjectRef
477 => JSObjectRef
478 -> args
478 -> args
479 -> JSValueRefRef
479 -> JSValueRefRef
480− -> JSC JSValueRef
480+ -> JSM JSValueRef
481#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
481#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
482objCallAsConstructor function args exceptions = do
482objCallAsConstructor function args exceptions = do
483 rargs <- makeArgRefs args >>= liftIO . toArray
483 rargs <- makeArgRefs args >>= liftIO . toArray
src/Language/Javascript/JSC/PropRef.hs → src/Language/Javascript/JSaddle/PropRef.hsrenamed+3−3
@@ -1,6 +1,6 @@
1-----------------------------------------------------------------------------
1-----------------------------------------------------------------------------
2--
2--
3−-- Module : Language.Javascript.JSC.PropRef
3+-- Module : Language.Javascript.JSaddle.PropRef
4-- Copyright : (c) Hamish Mackenzie
4-- Copyright : (c) Hamish Mackenzie
5-- License : MIT
5-- License : MIT
6--
6--
@@ -10,11 +10,11 @@
10--
10--
11-----------------------------------------------------------------------------
11-----------------------------------------------------------------------------
12
12
13−module Language.Javascript.JSC.PropRef (
13+module Language.Javascript.JSaddle.PropRef (
14 JSPropRef(..)
14 JSPropRef(..)
15) where
15) where
16
16
17−import Language.Javascript.JSC.Types
17+import Language.Javascript.JSaddle.Types
18 (JSStringRef, JSObjectRef, Index)
18 (JSStringRef, JSObjectRef, Index)
19
19
20-- | A reference to a property.
20-- | A reference to a property.
src/Language/Javascript/JSC/Properties.hs → src/Language/Javascript/JSaddle/Properties.hsrenamed+20−20
@@ -6,21 +6,21 @@
6#endif
6#endif
7-----------------------------------------------------------------------------
7-----------------------------------------------------------------------------
8--
8--
9−-- Module : Language.Javascript.JSC.Properties
9+-- Module : Language.Javascript.JSaddle.Properties
10-- Copyright : (c) Hamish Mackenzie
10-- Copyright : (c) Hamish Mackenzie
11-- License : MIT
11-- License : MIT
12--
12--
13-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
13-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
14--
14--
15-- | Low level JavaScript object property access. In most cases you
15-- | Low level JavaScript object property access. In most cases you
16−-- should use "Language.Javascript.JSC.Object" instead.
16+-- should use "Language.Javascript.JSaddle.Object" instead.
17--
17--
18-- This module is mostly here to implement functions needed to use
18-- This module is mostly here to implement functions needed to use
19-- 'JSPropRef'.
19-- 'JSPropRef'.
20--
20--
21-----------------------------------------------------------------------------
21-----------------------------------------------------------------------------
22
22
23−module Language.Javascript.JSC.Properties (
23+module Language.Javascript.JSaddle.Properties (
24 -- * Propery Reference
24 -- * Propery Reference
25 JSPropRef(..)
25 JSPropRef(..)
26 , MakePropRef(..)
26 , MakePropRef(..)
@@ -37,12 +37,12 @@ module Language.Javascript.JSC.Properties (
37) where
37) where
38
38
39import Control.Applicative ((<$>))
39import Control.Applicative ((<$>))
40−import Language.Javascript.JSC.PropRef (JSPropRef(..))
40+import Language.Javascript.JSaddle.PropRef (JSPropRef(..))
41−import Language.Javascript.JSC.Classes
41+import Language.Javascript.JSaddle.Classes
42 (MakePropRef(..), MakeObjectRef(..), MakeValueRef(..),
42 (MakePropRef(..), MakeObjectRef(..), MakeValueRef(..),
43 MakeArgRefs(..), MakeStringRef(..))
43 MakeArgRefs(..), MakeStringRef(..))
44−import Language.Javascript.JSC.Monad (JSC)
44+import Language.Javascript.JSaddle.Monad (JSM)
45−import Language.Javascript.JSC.Types
45+import Language.Javascript.JSaddle.Types
46 (JSValueRefRef, JSObjectRef, JSPropertyAttributes,
46 (JSValueRefRef, JSObjectRef, JSPropertyAttributes,
47 Index(..), JSStringRef)
47 Index(..), JSStringRef)
48#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
48#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
@@ -54,18 +54,18 @@ import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSObjectRef
54#endif
54#endif
55import Control.Monad.Trans.Reader (ask)
55import Control.Monad.Trans.Reader (ask)
56import Control.Monad.IO.Class (MonadIO(..))
56import Control.Monad.IO.Class (MonadIO(..))
57−import Language.Javascript.JSC.Exception (rethrow)
57+import Language.Javascript.JSaddle.Exception (rethrow)
58−import Language.Javascript.JSC.Value (JSValueRef)
58+import Language.Javascript.JSaddle.Value (JSValueRef)
59−import Language.Javascript.JSC.Arguments ()
59+import Language.Javascript.JSaddle.Arguments ()
60−import Language.Javascript.JSC.String ()
60+import Language.Javascript.JSaddle.String ()
61
61
62-- | If we already have a JSPropRef we are fine
62-- | If we already have a JSPropRef we are fine
63instance MakePropRef JSPropRef where
63instance MakePropRef JSPropRef where
64 makePropRef = return
64 makePropRef = return
65
65
66−-- | JSPropRef can be made by evaluating a function in 'JSC' as long
66+-- | JSPropRef can be made by evaluating a function in 'JSM' as long
67-- as it returns something we can make into a JSPropRef.
67-- as it returns something we can make into a JSPropRef.
68−instance MakePropRef prop => MakePropRef (JSC prop) where
68+instance MakePropRef prop => MakePropRef (JSM prop) where
69 makePropRef prop = prop >>= makePropRef
69 makePropRef prop = prop >>= makePropRef
70
70
71-- | We can use a property as an object.
71-- | We can use a property as an object.
@@ -87,7 +87,7 @@ objGetPropertyByName :: MakeStringRef name
87 => JSObjectRef -- ^ object to find the property on.
87 => JSObjectRef -- ^ object to find the property on.
88 -> name -- ^ name of the property.
88 -> name -- ^ name of the property.
89 -> JSValueRefRef -- ^ exception if one is raised.
89 -> JSValueRefRef -- ^ exception if one is raised.
90− -> JSC JSValueRef -- ^ returns the property value.
90+ -> JSM JSValueRef -- ^ returns the property value.
91#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
91#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
92objGetPropertyByName this name = liftIO . js_tryGetProp (makeStringRef name) this
92objGetPropertyByName this name = liftIO . js_tryGetProp (makeStringRef name) this
93foreign import javascript unsafe "try { $r=$2[$1] } catch(e) { $3[0] = e }"
93foreign import javascript unsafe "try { $r=$2[$1] } catch(e) { $3[0] = e }"
@@ -104,7 +104,7 @@ objGetPropertyByName = undefined
104objGetPropertyAtIndex :: JSObjectRef -- ^ object to find the property on.
104objGetPropertyAtIndex :: JSObjectRef -- ^ object to find the property on.
105 -> Index -- ^ index of the property.
105 -> Index -- ^ index of the property.
106 -> JSValueRefRef -- ^ exception if one is raised.
106 -> JSValueRefRef -- ^ exception if one is raised.
107− -> JSC JSValueRef -- ^ returns the property value.
107+ -> JSM JSValueRef -- ^ returns the property value.
108#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
108#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
109objGetPropertyAtIndex this index = liftIO . js_tryIndex index this
109objGetPropertyAtIndex this index = liftIO . js_tryIndex index this
110foreign import javascript unsafe "try { $r=$2[$1] } catch(e) { $3[0] = e }"
110foreign import javascript unsafe "try { $r=$2[$1] } catch(e) { $3[0] = e }"
@@ -119,7 +119,7 @@ objGetPropertyAtIndex = undefined
119
119
120-- | Gets the value of a property given a 'JSPropRef'.
120-- | Gets the value of a property given a 'JSPropRef'.
121objGetProperty :: JSPropRef -- ^ property reference.
121objGetProperty :: JSPropRef -- ^ property reference.
122− -> JSC JSValueRef -- ^ returns the property value.
122+ -> JSM JSValueRef -- ^ returns the property value.
123objGetProperty (JSPropRef this name ) =
123objGetProperty (JSPropRef this name ) =
124 rethrow $ objGetPropertyByName this name
124 rethrow $ objGetPropertyByName this name
125objGetProperty (JSPropIndexRef this index) =
125objGetProperty (JSPropIndexRef this index) =
@@ -128,7 +128,7 @@ objGetProperty (JSPropIndexRef this index) =
128-- | This version of 'objGetProperty' is handy when you also need to perform.
128-- | This version of 'objGetProperty' is handy when you also need to perform.
129-- another operation on the object the property is on.
129-- another operation on the object the property is on.
130objGetProperty' :: JSPropRef -- ^ property reference.
130objGetProperty' :: JSPropRef -- ^ property reference.
131− -> JSC (JSObjectRef, JSValueRef) -- ^ returns the object and property value.
131+ -> JSM (JSObjectRef, JSValueRef) -- ^ returns the object and property value.
132objGetProperty' (JSPropRef this name) = do
132objGetProperty' (JSPropRef this name) = do
133 p <- rethrow $ objGetPropertyByName this name
133 p <- rethrow $ objGetPropertyByName this name
134 return (this, p)
134 return (this, p)
@@ -144,7 +144,7 @@ objSetPropertyByName :: (MakeStringRef name, MakeValueRef val)
144 -> val -- ^ new value to set the property to.
144 -> val -- ^ new value to set the property to.
145 -> JSPropertyAttributes -- ^ property attributes to give the property.
145 -> JSPropertyAttributes -- ^ property attributes to give the property.
146 -> JSValueRefRef -- ^ exception if one is raised.
146 -> JSValueRefRef -- ^ exception if one is raised.
147− -> JSC ()
147+ -> JSM ()
148#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
148#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
149objSetPropertyByName this name val attributes exceptions = do
149objSetPropertyByName this name val attributes exceptions = do
150 vref <- makeValueRef val
150 vref <- makeValueRef val
@@ -166,7 +166,7 @@ objSetPropertyAtIndex :: (MakeValueRef val)
166 -> Index -- ^ index of the property.
166 -> Index -- ^ index of the property.
167 -> val -- ^ new value to set the property to.
167 -> val -- ^ new value to set the property to.
168 -> JSValueRefRef -- ^ exception if one is raised.
168 -> JSValueRefRef -- ^ exception if one is raised.
169− -> JSC ()
169+ -> JSM ()
170#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
170#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
171objSetPropertyAtIndex this index val exceptions = do
171objSetPropertyAtIndex this index val exceptions = do
172 vref <- makeValueRef val
172 vref <- makeValueRef val
@@ -186,7 +186,7 @@ objSetPropertyAtIndex = undefined
186objSetProperty :: (MakeValueRef val)
186objSetProperty :: (MakeValueRef val)
187 => JSPropRef -- ^ property reference.
187 => JSPropRef -- ^ property reference.
188 -> val -- ^ new value to set the property to.
188 -> val -- ^ new value to set the property to.
189− -> JSC ()
189+ -> JSM ()
190objSetProperty (JSPropRef this name ) val = rethrow $ objSetPropertyByName this name val 0
190objSetProperty (JSPropRef this name ) val = rethrow $ objSetPropertyByName this name val 0
191objSetProperty (JSPropIndexRef this index) val = rethrow $ objSetPropertyAtIndex this index val
191objSetProperty (JSPropIndexRef this index) val = rethrow $ objSetPropertyAtIndex this index val
192
192
src/Language/Javascript/JSC/String.hs → src/Language/Javascript/JSaddle/String.hsrenamed+4−4
@@ -3,7 +3,7 @@
3{-# LANGUAGE TypeSynonymInstances #-}
3{-# LANGUAGE TypeSynonymInstances #-}
4-----------------------------------------------------------------------------
4-----------------------------------------------------------------------------
5--
5--
6−-- Module : Language.Javascript.JSC.String
6+-- Module : Language.Javascript.JSaddle.String
7-- Copyright : (c) Hamish Mackenzie
7-- Copyright : (c) Hamish Mackenzie
8-- License : MIT
8-- License : MIT
9--
9--
@@ -13,7 +13,7 @@
13--
13--
14-----------------------------------------------------------------------------
14-----------------------------------------------------------------------------
15
15
16−module Language.Javascript.JSC.String (
16+module Language.Javascript.JSaddle.String (
17 JSStringRef
17 JSStringRef
18 , MakeStringRef(..)
18 , MakeStringRef(..)
19
19
@@ -25,7 +25,7 @@ module Language.Javascript.JSC.String (
25import Data.Text (Text)
25import Data.Text (Text)
26import qualified Data.Text as T (pack)
26import qualified Data.Text as T (pack)
27import Control.Monad.IO.Class (MonadIO(..))
27import Control.Monad.IO.Class (MonadIO(..))
28−import Language.Javascript.JSC.Types (JSStringRef)
28+import Language.Javascript.JSaddle.Types (JSStringRef)
29#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
29#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
30import GHCJS.Foreign (fromJSString, toJSString)
30import GHCJS.Foreign (fromJSString, toJSString)
31#else
31#else
@@ -36,7 +36,7 @@ import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSStringRef
36import qualified Data.Text.Foreign as T (fromPtr)
36import qualified Data.Text.Foreign as T (fromPtr)
37import Foreign (castPtr)
37import Foreign (castPtr)
38import Data.Text.Foreign (useAsPtr)
38import Data.Text.Foreign (useAsPtr)
39−import Language.Javascript.JSC.Classes (MakeStringRef(..))
39+import Language.Javascript.JSaddle.Classes (MakeStringRef(..))
40import System.IO.Unsafe (unsafePerformIO)
40import System.IO.Unsafe (unsafePerformIO)
41
41
42-- | If we already have a JSStringRef we are fine
42-- | If we already have a JSStringRef we are fine
src/Language/Javascript/JSC/Types.hs → src/Language/Javascript/JSaddle/Types.hsrenamed+2−2
@@ -1,7 +1,7 @@
1{-# LANGUAGE CPP, FlexibleInstances #-}
1{-# LANGUAGE CPP, FlexibleInstances #-}
2-----------------------------------------------------------------------------
2-----------------------------------------------------------------------------
3--
3--
4−-- Module : Language.Javascript.JSC.Properties
4+-- Module : Language.Javascript.JSaddle.Properties
5-- Copyright : (c) Hamish Mackenzie
5-- Copyright : (c) Hamish Mackenzie
6-- License : MIT
6-- License : MIT
7--
7--
@@ -11,7 +11,7 @@
11--
11--
12-----------------------------------------------------------------------------
12-----------------------------------------------------------------------------
13
13
14−module Language.Javascript.JSC.Types (
14+module Language.Javascript.JSaddle.Types (
15 JSValueRef(..)
15 JSValueRef(..)
16 , JSValueRefRef(..)
16 , JSValueRefRef(..)
17 , JSObjectRef(..)
17 , JSObjectRef(..)
src/Language/Javascript/JSC/Value.hs → src/Language/Javascript/JSaddle/Value.hsrenamed+87−87
@@ -7,7 +7,7 @@
7#endif
7#endif
8-----------------------------------------------------------------------------
8-----------------------------------------------------------------------------
9--
9--
10−-- Module : Language.Javascript.JSC.Value
10+-- Module : Language.Javascript.JSaddle.Value
11-- Copyright : (c) Hamish Mackenzie
11-- Copyright : (c) Hamish Mackenzie
12-- License : MIT
12-- License : MIT
13--
13--
@@ -29,7 +29,7 @@
29--
29--
30-----------------------------------------------------------------------------
30-----------------------------------------------------------------------------
31
31
32−module Language.Javascript.JSC.Value (
32+module Language.Javascript.JSaddle.Value (
33 -- * JavaScript value references
33 -- * JavaScript value references
34 JSValueRef
34 JSValueRef
35 , MakeValueRef(..)
35 , MakeValueRef(..)
@@ -64,7 +64,7 @@ module Language.Javascript.JSC.Value (
64) where
64) where
65
65
66import Prelude hiding (catch)
66import Prelude hiding (catch)
67−import Language.Javascript.JSC.Types
67+import Language.Javascript.JSaddle.Types
68 (JSValueRefRef, JSObjectRef, JSStringRef, JSValueRef)
68 (JSValueRefRef, JSObjectRef, JSStringRef, JSValueRef)
69#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
69#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
70import GHCJS.Types (castRef, JSRef(..))
70import GHCJS.Types (castRef, JSRef(..))
@@ -80,8 +80,8 @@ import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSStringRef
80 (jsstringcreatewithcharacters, jsstringgetcharactersptr,
80 (jsstringcreatewithcharacters, jsstringgetcharactersptr,
81 jsstringgetlength)
81 jsstringgetlength)
82#endif
82#endif
83−import Language.Javascript.JSC.Monad (JSC, catchval)
83+import Language.Javascript.JSaddle.Monad (JSM, catchval)
84−import Language.Javascript.JSC.Exception (rethrow)
84+import Language.Javascript.JSaddle.Exception (rethrow)
85import Control.Monad.Trans.Reader (ask)
85import Control.Monad.Trans.Reader (ask)
86import Control.Monad.IO.Class (MonadIO, MonadIO(..))
86import Control.Monad.IO.Class (MonadIO, MonadIO(..))
87import qualified Data.Text.Foreign as T (fromPtr)
87import qualified Data.Text.Foreign as T (fromPtr)
@@ -90,11 +90,11 @@ import Data.Text.Foreign (useAsPtr)
90import Control.Applicative ((<$>))
90import Control.Applicative ((<$>))
91import Data.Text (Text)
91import Data.Text (Text)
92import qualified Data.Text as T (pack)
92import qualified Data.Text as T (pack)
93−import Language.Javascript.JSC.Classes
93+import Language.Javascript.JSaddle.Classes
94 (MakeObjectRef(..), MakeStringRef(..), MakeValueRef(..),
94 (MakeObjectRef(..), MakeStringRef(..), MakeValueRef(..),
95 MakeArgRefs(..))
95 MakeArgRefs(..))
96−import Language.Javascript.JSC.String (strToText, textToStr)
96+import Language.Javascript.JSaddle.String (strToText, textToStr)
97−import Language.Javascript.JSC.Arguments ()
97+import Language.Javascript.JSaddle.Arguments ()
98import Data.Word (Word)
98import Data.Word (Word)
99
99
100data JSNull = JSNull -- ^ Type that represents a value that can only be null.
100data JSNull = JSNull -- ^ Type that represents a value that can only be null.
@@ -119,23 +119,23 @@ data JSValue = ValNull -- ^ null
119-- | Given a JavaScript value get its boolean value.
119-- | Given a JavaScript value get its boolean value.
120-- All values in JavaScript convert to bool.
120-- All values in JavaScript convert to bool.
121--
121--
122−-- >>> testJSC $ valToBool JSNull
122+-- >>> testJSaddle $ valToBool JSNull
123-- false
123-- false
124−-- >>> testJSC $ valToBool ()
124+-- >>> testJSaddle $ valToBool ()
125-- false
125-- false
126−-- >>> testJSC $ valToBool True
126+-- >>> testJSaddle $ valToBool True
127-- true
127-- true
128−-- >>> testJSC $ valToBool False
128+-- >>> testJSaddle $ valToBool False
129-- false
129-- false
130−-- >>> testJSC $ valToBool (1.0 :: Double)
130+-- >>> testJSaddle $ valToBool (1.0 :: Double)
131-- true
131-- true
132−-- >>> testJSC $ valToBool (0.0 :: Double)
132+-- >>> testJSaddle $ valToBool (0.0 :: Double)
133-- false
133-- false
134−-- >>> testJSC $ valToBool ""
134+-- >>> testJSaddle $ valToBool ""
135-- false
135-- false
136−-- >>> testJSC $ valToBool "1"
136+-- >>> testJSaddle $ valToBool "1"
137-- true
137-- true
138−valToBool :: MakeValueRef val => val -> JSC JSBool
138+valToBool :: MakeValueRef val => val -> JSM JSBool
139#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
139#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
140valToBool val = fromJSBool' <$> makeValueRef val
140valToBool val = fromJSBool' <$> makeValueRef val
141#else
141#else
@@ -148,23 +148,23 @@ valToBool val = do
148-- | Given a JavaScript value get its numeric value.
148-- | Given a JavaScript value get its numeric value.
149-- May throw JSException.
149-- May throw JSException.
150--
150--
151−-- >>> testJSC $ show <$> valToNumber JSNull
151+-- >>> testJSaddle $ show <$> valToNumber JSNull
152-- 0.0
152-- 0.0
153−-- >>> testJSC $ show <$> valToNumber ()
153+-- >>> testJSaddle $ show <$> valToNumber ()
154-- NaN
154-- NaN
155−-- >>> testJSC $ show <$> valToNumber True
155+-- >>> testJSaddle $ show <$> valToNumber True
156-- 1.0
156-- 1.0
157−-- >>> testJSC $ show <$> valToNumber False
157+-- >>> testJSaddle $ show <$> valToNumber False
158-- 0.0
158-- 0.0
159−-- >>> testJSC $ show <$> valToNumber (1.0 :: Double)
159+-- >>> testJSaddle $ show <$> valToNumber (1.0 :: Double)
160-- 1.0
160-- 1.0
161−-- >>> testJSC $ show <$> valToNumber (0.0 :: Double)
161+-- >>> testJSaddle $ show <$> valToNumber (0.0 :: Double)
162-- 0.0
162-- 0.0
163−-- >>> testJSC $ show <$> valToNumber ""
163+-- >>> testJSaddle $ show <$> valToNumber ""
164-- 0.0
164-- 0.0
165−-- >>> testJSC $ show <$> valToNumber "1"
165+-- >>> testJSaddle $ show <$> valToNumber "1"
166-- 1.0
166-- 1.0
167−valToNumber :: MakeValueRef val => val -> JSC JSNumber
167+valToNumber :: MakeValueRef val => val -> JSM JSNumber
168#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
168#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
169valToNumber val = jsrefToNumber <$> makeValueRef val
169valToNumber val = jsrefToNumber <$> makeValueRef val
170foreign import javascript unsafe "$r = Number($1);" jsrefToNumber :: JSRef a -> Double
170foreign import javascript unsafe "$r = Number($1);" jsrefToNumber :: JSRef a -> Double
@@ -180,23 +180,23 @@ valToNumber = undefined
180-- | Given a JavaScript value get its string value (as a JavaScript string).
180-- | Given a JavaScript value get its string value (as a JavaScript string).
181-- May throw JSException.
181-- May throw JSException.
182--
182--
183−-- >>> testJSC $ valToStr JSNull >>= strToText
183+-- >>> testJSaddle $ valToStr JSNull >>= strToText
184-- null
184-- null
185−-- >>> testJSC $ valToStr () >>= strToText
185+-- >>> testJSaddle $ valToStr () >>= strToText
186-- undefined
186-- undefined
187−-- >>> testJSC $ valToStr True >>= strToText
187+-- >>> testJSaddle $ valToStr True >>= strToText
188-- true
188-- true
189−-- >>> testJSC $ valToStr False >>= strToText
189+-- >>> testJSaddle $ valToStr False >>= strToText
190-- false
190-- false
191−-- >>> testJSC $ valToStr (1.0 :: Double) >>= strToText
191+-- >>> testJSaddle $ valToStr (1.0 :: Double) >>= strToText
192-- 1
192-- 1
193−-- >>> testJSC $ valToStr (0.0 :: Double) >>= strToText
193+-- >>> testJSaddle $ valToStr (0.0 :: Double) >>= strToText
194-- 0
194-- 0
195−-- >>> testJSC $ valToStr "" >>= strToText
195+-- >>> testJSaddle $ valToStr "" >>= strToText
196--
196--
197−-- >>> testJSC $ valToStr "1" >>= strToText
197+-- >>> testJSaddle $ valToStr "1" >>= strToText
198-- 1
198-- 1
199−valToStr :: MakeValueRef val => val -> JSC JSStringRef
199+valToStr :: MakeValueRef val => val -> JSM JSStringRef
200#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
200#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
201valToStr val = jsrefToString <$> makeValueRef val
201valToStr val = jsrefToString <$> makeValueRef val
202foreign import javascript unsafe "$r = $1.toString();" jsrefToString :: JSRef a -> JSStringRef
202foreign import javascript unsafe "$r = $1.toString();" jsrefToString :: JSRef a -> JSStringRef
@@ -212,47 +212,47 @@ valToStr = undefined
212-- | Given a JavaScript value get its string value (as a Haskell 'Text').
212-- | Given a JavaScript value get its string value (as a Haskell 'Text').
213-- May throw JSException.
213-- May throw JSException.
214--
214--
215−-- >>> testJSC $ show <$> valToText JSNull
215+-- >>> testJSaddle $ show <$> valToText JSNull
216-- "null"
216-- "null"
217−-- >>> testJSC $ show <$> valToText ()
217+-- >>> testJSaddle $ show <$> valToText ()
218-- "undefined"
218-- "undefined"
219−-- >>> testJSC $ show <$> valToText True
219+-- >>> testJSaddle $ show <$> valToText True
220-- "true"
220-- "true"
221−-- >>> testJSC $ show <$> valToText False
221+-- >>> testJSaddle $ show <$> valToText False
222-- "false"
222-- "false"
223−-- >>> testJSC $ show <$> valToText (1.0 :: Double)
223+-- >>> testJSaddle $ show <$> valToText (1.0 :: Double)
224-- "1"
224-- "1"
225−-- >>> testJSC $ show <$> valToText (0.0 :: Double)
225+-- >>> testJSaddle $ show <$> valToText (0.0 :: Double)
226-- "0"
226-- "0"
227−-- >>> testJSC $ show <$> valToText ""
227+-- >>> testJSaddle $ show <$> valToText ""
228-- ""
228-- ""
229−-- >>> testJSC $ show <$> valToText "1"
229+-- >>> testJSaddle $ show <$> valToText "1"
230-- "1"
230-- "1"
231−valToText :: MakeValueRef val => val -> JSC Text
231+valToText :: MakeValueRef val => val -> JSM Text
232valToText jsvar = valToStr jsvar >>= strToText
232valToText jsvar = valToStr jsvar >>= strToText
233
233
234-- | Given a JavaScript value get a JSON string value.
234-- | Given a JavaScript value get a JSON string value.
235-- May throw JSException.
235-- May throw JSException.
236--
236--
237−-- >>> testJSC $ valToJSON 0 JSNull >>= strToText
237+-- >>> testJSaddle $ valToJSON 0 JSNull >>= strToText
238-- null
238-- null
239−-- >>> testJSC $ valToJSON 0 () >>= strToText
239+-- >>> testJSaddle $ valToJSON 0 () >>= strToText
240--
240--
241−-- >>> testJSC $ valToJSON 0 True >>= strToText
241+-- >>> testJSaddle $ valToJSON 0 True >>= strToText
242-- true
242-- true
243−-- >>> testJSC $ valToJSON 0 False >>= strToText
243+-- >>> testJSaddle $ valToJSON 0 False >>= strToText
244-- false
244-- false
245−-- >>> testJSC $ valToJSON 0 (1.0 :: Double) >>= strToText
245+-- >>> testJSaddle $ valToJSON 0 (1.0 :: Double) >>= strToText
246-- 1
246-- 1
247−-- >>> testJSC $ valToJSON 0 (0.0 :: Double) >>= strToText
247+-- >>> testJSaddle $ valToJSON 0 (0.0 :: Double) >>= strToText
248-- 0
248-- 0
249−-- >>> testJSC $ valToJSON 0 "" >>= strToText
249+-- >>> testJSaddle $ valToJSON 0 "" >>= strToText
250-- ""
250-- ""
251−-- >>> testJSC $ valToJSON 0 "1" >>= strToText
251+-- >>> testJSaddle $ valToJSON 0 "1" >>= strToText
252-- "1"
252-- "1"
253−-- >>> testJSC $ obj >>= valToJSON 0 >>= strToText
253+-- >>> testJSaddle $ obj >>= valToJSON 0 >>= strToText
254-- {}
254-- {}
255−valToJSON :: MakeValueRef val => Word -> val -> JSC JSStringRef
255+valToJSON :: MakeValueRef val => Word -> val -> JSM JSStringRef
256#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
256#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
257valToJSON indent val = jsrefToJSON <$> makeValueRef val
257valToJSON indent val = jsrefToJSON <$> makeValueRef val
258foreign import javascript unsafe "$r = JSON.stringify($1);" jsrefToJSON :: JSRef a -> JSStringRef
258foreign import javascript unsafe "$r = JSON.stringify($1);" jsrefToJSON :: JSRef a -> JSStringRef
@@ -268,23 +268,23 @@ valToJSON = undefined
268-- | Given a JavaScript value get its object value.
268-- | Given a JavaScript value get its object value.
269-- May throw JSException.
269-- May throw JSException.
270--
270--
271−-- >>> testJSC $ (valToObject JSNull >>= valToText) `catch` \ (JSException e) -> valToText e
271+-- >>> testJSaddle $ (valToObject JSNull >>= valToText) `catch` \ (JSException e) -> valToText e
272-- TypeError: 'null' is not an object
272-- TypeError: 'null' is not an object
273−-- >>> testJSC $ (valToObject () >>= valToText) `catch` \ (JSException e) -> valToText e
273+-- >>> testJSaddle $ (valToObject () >>= valToText) `catch` \ (JSException e) -> valToText e
274-- TypeError: 'undefined' is not an object
274-- TypeError: 'undefined' is not an object
275−-- >>> testJSC $ valToObject True
275+-- >>> testJSaddle $ valToObject True
276-- true
276-- true
277−-- >>> testJSC $ valToObject False
277+-- >>> testJSaddle $ valToObject False
278-- false
278-- false
279−-- >>> testJSC $ valToObject (1.0 :: Double)
279+-- >>> testJSaddle $ valToObject (1.0 :: Double)
280-- 1
280-- 1
281−-- >>> testJSC $ valToObject (0.0 :: Double)
281+-- >>> testJSaddle $ valToObject (0.0 :: Double)
282-- 0
282-- 0
283−-- >>> testJSC $ valToObject ""
283+-- >>> testJSaddle $ valToObject ""
284--
284--
285−-- >>> testJSC $ valToObject "1"
285+-- >>> testJSaddle $ valToObject "1"
286-- 1
286-- 1
287−valToObject :: MakeValueRef val => val -> JSC JSObjectRef
287+valToObject :: MakeValueRef val => val -> JSM JSObjectRef
288#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
288#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
289valToObject val = castRef <$> makeValueRef val
289valToObject val = castRef <$> makeValueRef val
290#else
290#else
@@ -297,7 +297,7 @@ valToObject val = do
297-- | Convert to a JavaScript value (just an alias for 'makeValueRef')
297-- | Convert to a JavaScript value (just an alias for 'makeValueRef')
298val :: MakeValueRef value
298val :: MakeValueRef value
299 => value -- ^ value to convert to a JavaScript value
299 => value -- ^ value to convert to a JavaScript value
300− -> JSC JSValueRef
300+ -> JSM JSValueRef
301val = makeValueRef
301val = makeValueRef
302
302
303-- | If we already have a JSValueRef we are fine
303-- | If we already have a JSValueRef we are fine
@@ -308,14 +308,14 @@ instance MakeValueRef JSValueRef where
308instance MakeArgRefs JSValueRef where
308instance MakeArgRefs JSValueRef where
309 makeArgRefs arg = return [arg]
309 makeArgRefs arg = return [arg]
310
310
311−-- | JSValueRef can be made by evaluating a function in 'JSC' as long
311+-- | JSValueRef can be made by evaluating a function in 'JSM' as long
312-- as it returns something we can make into a JSValueRef.
312-- as it returns something we can make into a JSValueRef.
313−instance MakeValueRef v => MakeValueRef (JSC v) where
313+instance MakeValueRef v => MakeValueRef (JSM v) where
314 makeValueRef v = v >>= makeValueRef
314 makeValueRef v = v >>= makeValueRef
315
315
316----------- null ---------------
316----------- null ---------------
317-- | Make a @null@ JavaScript value
317-- | Make a @null@ JavaScript value
318−valMakeNull :: JSC JSValueRef
318+valMakeNull :: JSM JSValueRef
319#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
319#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
320valMakeNull = return jsNull
320valMakeNull = return jsNull
321#else
321#else
@@ -332,7 +332,7 @@ instance MakeArgRefs JSNull where
332
332
333----------- undefined ---------------
333----------- undefined ---------------
334-- | Make an @undefined@ JavaScript value
334-- | Make an @undefined@ JavaScript value
335−valMakeUndefined :: JSC JSValueRef
335+valMakeUndefined :: JSM JSValueRef
336#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
336#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
337valMakeUndefined = return jsUndefined
337valMakeUndefined = return jsUndefined
338#else
338#else
@@ -354,7 +354,7 @@ instance MakeArgRefs () where
354
354
355----------- booleans ---------------
355----------- booleans ---------------
356-- | Make a JavaScript boolean value
356-- | Make a JavaScript boolean value
357−valMakeBool :: JSBool -> JSC JSValueRef
357+valMakeBool :: JSBool -> JSM JSValueRef
358#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
358#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
359valMakeBool b = return . castRef $ toJSBool b
359valMakeBool b = return . castRef $ toJSBool b
360#else
360#else
@@ -373,7 +373,7 @@ instance MakeArgRefs Bool where
373
373
374----------- numbers ---------------
374----------- numbers ---------------
375-- | Make a JavaScript number
375-- | Make a JavaScript number
376−valMakeNumber :: JSNumber -> JSC JSValueRef
376+valMakeNumber :: JSNumber -> JSM JSValueRef
377#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
377#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
378valMakeNumber n = liftIO $ castRef <$> toJSRef n
378valMakeNumber n = liftIO $ castRef <$> toJSRef n
379#else
379#else
@@ -392,7 +392,7 @@ instance MakeArgRefs Double where
392
392
393----------- numbers ---------------
393----------- numbers ---------------
394-- | Make a JavaScript string
394-- | Make a JavaScript string
395−valMakeString :: Text -> JSC JSValueRef
395+valMakeString :: Text -> JSM JSValueRef
396#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
396#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
397valMakeString = return . castRef . toJSString
397valMakeString = return . castRef . toJSString
398#else
398#else
@@ -415,25 +415,25 @@ instance MakeValueRef String where
415
415
416-- | Derefernce a value reference.
416-- | Derefernce a value reference.
417--
417--
418−-- >>> testJSC $ show <$> deRefVal JSNull
418+-- >>> testJSaddle $ show <$> deRefVal JSNull
419-- ValNull
419-- ValNull
420−-- >>> testJSC $ show <$> deRefVal ()
420+-- >>> testJSaddle $ show <$> deRefVal ()
421-- ValUndefined
421-- ValUndefined
422−-- >>> testJSC $ show <$> deRefVal True
422+-- >>> testJSaddle $ show <$> deRefVal True
423-- ValBool True
423-- ValBool True
424−-- >>> testJSC $ show <$> deRefVal False
424+-- >>> testJSaddle $ show <$> deRefVal False
425-- ValBool False
425-- ValBool False
426−-- >>> testJSC $ show <$> deRefVal (1.0 :: Double)
426+-- >>> testJSaddle $ show <$> deRefVal (1.0 :: Double)
427-- ValNumber 1.0
427-- ValNumber 1.0
428−-- >>> testJSC $ show <$> deRefVal (0.0 :: Double)
428+-- >>> testJSaddle $ show <$> deRefVal (0.0 :: Double)
429-- ValNumber 0.0
429-- ValNumber 0.0
430−-- >>> testJSC $ show <$> deRefVal ""
430+-- >>> testJSaddle $ show <$> deRefVal ""
431-- ValString ""
431-- ValString ""
432−-- >>> testJSC $ show <$> deRefVal "1"
432+-- >>> testJSaddle $ show <$> deRefVal "1"
433-- ValString "1"
433-- ValString "1"
434−-- >>> testJSC $ show <$> valToObject True >>= deRefVal
434+-- >>> testJSaddle $ show <$> valToObject True >>= deRefVal
435-- ValObject 0x...
435-- ValObject 0x...
436−deRefVal :: MakeValueRef val => val -> JSC JSValue
436+deRefVal :: MakeValueRef val => val -> JSM JSValue
437#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
437#if defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)
438deRefVal val = do
438deRefVal val = do
439 gctxt <- ask
439 gctxt <- ask
@@ -469,17 +469,17 @@ deRefVal = undefined
469
469
470-- | Make a JavaScript value out of a 'JSValue' ADT.
470-- | Make a JavaScript value out of a 'JSValue' ADT.
471--
471--
472−-- >>> testJSC $ valMakeRef ValNull
472+-- >>> testJSaddle $ valMakeRef ValNull
473-- "null"
473-- "null"
474−-- >>> testJSC $ valMakeRef ValUndefined
474+-- >>> testJSaddle $ valMakeRef ValUndefined
475-- "undefined"
475-- "undefined"
476−-- >>> testJSC $ valMakeRef (ValBool True)
476+-- >>> testJSaddle $ valMakeRef (ValBool True)
477-- "true"
477-- "true"
478−-- >>> testJSC $ valMakeRef (ValNumber 1)
478+-- >>> testJSaddle $ valMakeRef (ValNumber 1)
479-- "1"
479-- "1"
480−-- >>> testJSC $ valMakeRef (ValString $ pack "Hello")
480+-- >>> testJSaddle $ valMakeRef (ValString $ pack "Hello")
481-- "Hello"
481-- "Hello"
482−valMakeRef :: JSValue -> JSC JSValueRef
482+valMakeRef :: JSValue -> JSM JSValueRef
483valMakeRef val =
483valMakeRef val =
484 case val of
484 case val of
485 ValNull -> valMakeNull
485 ValNull -> valMakeNull
tests/TestJSC.hs → tests/TestJSaddle.hsrenamed+12−12
@@ -33,7 +33,7 @@ import Control.Monad.Trans.Reader (runReaderT)
33import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSBase (JSContextRef)
33import Graphics.UI.Gtk.WebKit.JavaScriptCore.JSBase (JSContextRef)
34import Graphics.UI.Gtk.WebKit.JavaScriptCore.WebFrame
34import Graphics.UI.Gtk.WebKit.JavaScriptCore.WebFrame
35 (webFrameGetGlobalContext)
35 (webFrameGetGlobalContext)
36−import Language.Javascript.JSC
36+import Language.Javascript.JSaddle
37import Data.Text (Text)
37import Data.Text (Text)
38import qualified Data.Text as T
38import qualified Data.Text as T
39import Control.Applicative
39import Control.Applicative
@@ -48,18 +48,18 @@ data TestState = TestState { jsContext :: JSContextRef, window :: Window }
48state = unsafePerformIO $ newMVar Nothing
48state = unsafePerformIO $ newMVar Nothing
49done = unsafePerformIO $ newEmptyMVar
49done = unsafePerformIO $ newEmptyMVar
50
50
51−-- >>> testJSC $ ((global ^. js "console" . js "log") # ["Hello"])
51+-- >>> testJSaddle $ ((global ^. js "console" . js "log") # ["Hello"])
52−testJSC :: MakeValueRef val => JSC val -> IO ()
52+testJSaddle :: MakeValueRef val => JSM val -> IO ()
53−testJSC = testJSC' False
53+testJSaddle = testJSaddle' False
54
54
55−-- >>> showJSC $ eval "document.body.innerHTML = 'Test'"
55+-- >>> showJSaddle $ eval "document.body.innerHTML = 'Test'"
56−showJSC :: MakeValueRef val => JSC val -> IO ()
56+showJSaddle :: MakeValueRef val => JSM val -> IO ()
57−showJSC = testJSC' True
57+showJSaddle = testJSaddle' True
58
58
59−debugLog = debugM "jsc"
59+debugLog = debugM "jsaddle"
60
60
61−testJSC' :: MakeValueRef val => Bool -> JSC val -> IO ()
61+testJSaddle' :: MakeValueRef val => Bool -> JSM val -> IO ()
62−testJSC' showWindow f = do
62+testJSaddle' showWindow f = do
63 debugLog "taking done"
63 debugLog "taking done"
64 tryTakeMVar done
64 tryTakeMVar done
65 debugLog "taking state"
65 debugLog "taking state"
@@ -113,12 +113,12 @@ testJSC' showWindow f = do
113 return x
113 return x
114
114
115main = do
115main = do
116− testJSC $ return ()
116+ testJSaddle $ return ()
117 Just TestState{..} <- takeMVar state
117 Just TestState{..} <- takeMVar state
118 postGUIAsync $ widgetDestroy window
118 postGUIAsync $ widgetDestroy window
119 takeMVar done
119 takeMVar done
120
120
121−listWindowProperties = testJSC $ T.pack . show <$> do
121+listWindowProperties = testJSaddle $ T.pack . show <$> do
122 window <- jsg "window"
122 window <- jsg "window"
123 names <- propertyNames window
123 names <- propertyNames window
124 forM names $ \name -> do
124 forM names $ \name -> do