@@ -70,6 +70,7 @@ class Monad m => MonadJS x m | m -> x where
70 mkJSUndefined :: m (JSRef x)
70 mkJSUndefined :: m (JSRef x)
71 isJSNull :: JSRef x -> m Bool
71 isJSNull :: JSRef x -> m Bool
72 isJSUndefined :: JSRef x -> m Bool
72 isJSUndefined :: JSRef x -> m Bool
73+ fromJSBool :: JSRef x -> m Bool
73 fromJSString :: JSRef x -> m String
74 fromJSString :: JSRef x -> m String
74 fromJSArray :: JSRef x -> m [JSRef x]
75 fromJSArray :: JSRef x -> m [JSRef x]
75 fromJSNumber :: JSRef x -> m Double
76 fromJSNumber :: JSRef x -> m Double
@@ -96,6 +97,7 @@ instance MonadJS JSCtx_IO IO where
96 mkJSUndefined = return $ JSRef_IO JS.jsUndefined
97 mkJSUndefined = return $ JSRef_IO JS.jsUndefined
97 isJSNull (JSRef_IO r) = return $ JS.isNull r
98 isJSNull (JSRef_IO r) = return $ JS.isNull r
98 isJSUndefined (JSRef_IO r) = return $ JS.isUndefined r
99 isJSUndefined (JSRef_IO r) = return $ JS.isUndefined r
100+ fromJSBool (JSRef_IO r) = return $ JS.fromJSBool $ JS.castRef r
99 fromJSString (JSRef_IO r) = return $ JS.fromJSString $ JS.castRef r
101 fromJSString (JSRef_IO r) = return $ JS.fromJSString $ JS.castRef r
100 fromJSArray (JSRef_IO r) = liftM coerce $ JS.fromArray $ JS.castRef r
102 fromJSArray (JSRef_IO r) = liftM coerce $ JS.fromArray $ JS.castRef r
101 fromJSNumber (JSRef_IO r) = do
103 fromJSNumber (JSRef_IO r) = do
@@ -174,6 +176,9 @@ instance MonadJS (JSCtx_JavaScriptCore x) (WithWebView x IO) where
174 isJSUndefined (JSRef_JavaScriptCore r) = do
176 isJSUndefined (JSRef_JavaScriptCore r) = do
175 jsContext <- askJSContext
177 jsContext <- askJSContext
176 liftIO $ jsvalueisundefined jsContext r
178 liftIO $ jsvalueisundefined jsContext r
179+ fromJSBool (JSRef_JavaScriptCore r) = do
180+ jsContext <- askJSContext
181+ liftIO $ jsvaluetoboolean jsContext r
177 fromJSString (JSRef_JavaScriptCore r) = do
182 fromJSString (JSRef_JavaScriptCore r) = do
178 jsContext <- askJSContext
183 jsContext <- askJSContext
179 liftIO $ do
184 liftIO $ do
@@ -258,6 +263,9 @@ class FromJS x a where
258instance FromJS x () where
263instance FromJS x () where
259 fromJS _ = return () --TODO: Should this do some kind of checking for the js value?
264 fromJS _ = return () --TODO: Should this do some kind of checking for the js value?
266+instance FromJS x Bool where
261instance FromJS x String where
269instance FromJS x String where
262 fromJS = fromJSString
270 fromJS = fromJSString