on develop help sign in
fix for JSUint8Array, change argument order of setJSProp
commit30a1beabd25b4a2165d5cf90f27a10791b792145 authorAli Abrar <aliabrar@gmail.com> dateSun 26 Jul 2015, 19:48 (11 years ago) parent2ea6efe
1 file changed+8−8
src/Foreign/JavaScript/TH.hs+8−8
src/Foreign/JavaScript/TH.hs+8−8
@@ -73,6 +73,7 @@ class Monad m => MonadJS x m | m -> x where
7373 fromJSBool :: JSRef x -> m Bool
7474 fromJSString :: JSRef x -> m String
7575 fromJSArray :: JSRef x -> m [JSRef x]
76+ fromJSUint8Array :: JSRef x -> m ByteString
7677 fromJSNumber :: JSRef x -> m Double
7778 withJSBool :: Bool -> (JSRef x -> m r) -> m r
7879 withJSString :: String -> (JSRef x -> m r) -> m r
@@ -102,6 +103,7 @@ instance MonadJS JSCtx_IO IO where
102103 fromJSBool (JSRef_IO r) = return $ JS.fromJSBool $ JS.castRef r
103104 fromJSString (JSRef_IO r) = return $ JS.fromJSString $ JS.castRef r
104105 fromJSArray (JSRef_IO r) = liftM coerce $ JS.fromArray $ JS.castRef r
106+ fromJSUint8Array (JSRef_IO r) = JS.bufferByteString 0 0 $ JS.castRef r
105107 fromJSNumber (JSRef_IO r) = do
106108 Just n <- JS.fromJSRef $ JS.castRef r
107109 return n
@@ -123,7 +125,7 @@ instance MonadJS JSCtx_IO IO where
123125 return $ JS.castRef result
124126 liftM (JSFun . JSRef_IO) $ funWithArguments cb
125127 freeJSFun (JSFun (JSRef_IO r)) = JS.release $ JS.castRef r
126− setJSProp s (JSRef_IO o) (JSRef_IO v) = JS.setProp s o v
128+ setJSProp s (JSRef_IO v) (JSRef_IO o) = JS.setProp s v o
127129 getJSProp s (JSRef_IO o) = do
128130 r <- JS.getProp s o
129131 return $ JSRef_IO r
@@ -225,6 +227,10 @@ instance MonadJS (JSCtx_JavaScriptCore x) (WithWebView x IO) where
225227 let len = round lenDouble
226228 liftIO $ forM [0..len-1] $ \i -> do
227229 liftM JSRef_JavaScriptCore $ jsobjectgetpropertyatindex jsContext a i nullPtr --TODO: Exceptions
230+ fromJSUint8Array a = do
231+ vals <- fromJSArray a
232+ doubles <- mapM fromJSNumber vals
233+ return $ BS.pack $ map round doubles
228234 fromJSNumber (JSRef_JavaScriptCore val) = do
229235 jsContext <- askJSContext
230236 liftIO $ jsvaluetonumber jsContext val nullPtr --TODO: Exceptions
@@ -243,7 +249,7 @@ instance MonadJS (JSCtx_JavaScriptCore x) (WithWebView x IO) where
243249 freeJSFun (JSFun (JSRef_JavaScriptCore f)) = do
244250 jsContext <- askJSContext
245251 liftIO $ jsvalueunprotect jsContext f
246− setJSProp propName (JSRef_JavaScriptCore objRef) (JSRef_JavaScriptCore valRef) = do
252+ setJSProp propName (JSRef_JavaScriptCore valRef) (JSRef_JavaScriptCore objRef) = do
247253 withJSStringRaw propName $ \propNameRaw -> do
248254 jsContext <- askJSContext
249255 liftIO $ jsobjectsetproperty jsContext objRef propNameRaw valRef 0 nullPtr --TODO: property attribute, exceptions
@@ -343,12 +349,6 @@ instance ToJS x Node where
343349 withJS = withJSNode
344350
345351
346−fromJSUint8Array :: MonadJS x m => JSUint8Array x -> m ByteString
347−fromJSUint8Array (JSUint8Array a) = do
348− vals <- fromJSArray a
349− doubles <- mapM fromJSNumber vals
350− return $ BS.pack $ map round doubles
351−
352352importJS :: Safety -> String -> String -> Q Type -> Q [Dec]
353353importJS safety body name qt = do
354354 t <- qt