jsaddle 0.5.1.1 → 0.5.2.0
raw patch · 3 files changed
+16/−9 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.Javascript.JSaddle.Object: [functionCallback] :: Function -> HaskellCallback
- Language.Javascript.JSaddle.Object: data Function
+ Language.Javascript.JSaddle.Object: newtype Function
- Language.Javascript.JSaddle.Object: Function :: HaskellCallback -> Object -> Function
+ Language.Javascript.JSaddle.Object: Function :: Object -> Function
Files
- jsaddle.cabal +1/−1
- src/Language/Javascript/JSaddle/Object.hs +14/−8
- tests/DocTest.hs +1/−0
jsaddle.cabal view
@@ -1,5 +1,5 @@ name: jsaddle-version: 0.5.1.1+version: 0.5.2.0 cabal-version: >=1.10 build-type: Simple license: MIT
src/Language/Javascript/JSaddle/Object.hs view
@@ -123,6 +123,7 @@ import Data.Text (Text) -- $setup+-- >>> import Control.Concurrent.MVar (newEmptyMVar, takeMVar, putMVar) -- >>> import Language.Javascript.JSaddle.Test (testJSaddle) -- >>> import Language.Javascript.JSaddle.Evaluate (eval) -- >>> import Language.Javascript.JSaddle.Value (val, valToText, JSNull(..), deRefVal)@@ -409,19 +410,24 @@ -- -- >>> testJSaddle $ eval "(function(f) {f('Hello');})(function (a) {console.log(a)})" -- undefined--- >>> testJSaddle . deRefVal $ call (eval "(function(f) {f('Hello');})") global [fun $ \ _ _ args -> valToText (head args) >>= (liftIO . putStrLn . T.unpack) ]+-- >>> :{+-- testJSaddle $ do+-- result <- liftIO newEmptyMVar+-- deRefVal $ call (eval "(function(f) {f('Hello');})") global [fun $ \ _ _ [arg1] -> do+-- valToText arg1 >>= (liftIO . putMVar result)+-- ]+-- liftIO $ takeMVar result+-- :} -- Hello--- undefined fun :: JSCallAsFunction -> JSCallAsFunction fun = id #ifdef ghcjs_HOST_OS-type HaskellCallback = Callback (JSVal -> JSVal -> IO ())+data Function = Function {functionCallback :: Callback (JSVal -> JSVal -> IO ()), functionObject :: Object} #else-type HaskellCallback = ()+newtype Function = Function {functionObject :: Object} #endif -data Function = Function {functionCallback :: HaskellCallback, functionObject :: Object} -- ^ Make a JavaScript function object that wraps a Haskell function. function :: JSCallAsFunction -- ^ Haskell function to call@@ -440,7 +446,7 @@ obj <- Object <$> sendLazyCommand NewCallback add <- addCallback <$> askJSM liftIO $ add obj f- return $ Function () obj+ return $ Function obj #endif freeFunction :: Function -> JSM ()@@ -448,13 +454,13 @@ freeFunction (Function callback _) = liftIO $ releaseCallback callback #else-freeFunction (Function callback obj) = do+freeFunction (Function obj) = do free <- freeCallback <$> askJSM liftIO $ free obj #endif instance ToJSVal Function where- toJSVal (Function _ f) = toJSVal f+ toJSVal = toJSVal . functionObject -- | A callback to Haskell can be used as a JavaScript value. This will create -- an anonymous JavaScript function object. Use 'function' to create one with
tests/DocTest.hs view
@@ -57,6 +57,7 @@ "-package=containers-" ++ VERSION_containers, "-package=process-" ++ VERSION_process, "-package=filepath-" ++ VERSION_filepath,+ "-package=ref-tf-" ++ VERSION_ref_tf, "-isrc", "src/Language/Javascript/JSaddle/Arguments.hs", "src/Language/Javascript/JSaddle/Classes.hs",