{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module Main (main) where import qualified Data.JSString as JS import qualified GHCJS.Foreign.Callback as J import qualified GHCJS.Types as J import qualified JavaScript.Extras as JE import qualified JavaScript.Extras.JSVar.Unsafe as JE #ifdef __GHCJS__ test :: JE.JSVar -> IO () test x = do let str = show x x' = read str :: JE.JSVar str' = show x' js_write $ "Test: " `mappend` (JS.pack str) `mappend` " == " `mappend` (JS.pack str') main :: IO () main = do test js_int test js_obj cb <- J.syncCallback' (pure (JE.toJS js_int)) test (JE.JSVar (J.jsval cb)) J.releaseCallback cb test (JE.JSVar (J.jsval cb)) foreign import javascript unsafe "document.write('

' + $1 + '

')" js_write :: JS.JSString -> IO () foreign import javascript unsafe "5" js_int :: JE.JSVar foreign import javascript unsafe "{ 'hello': 'world' }" js_obj :: JE.JSVar #else main :: IO () main = pure () #endif