jsaddle-0.8.0.0: src-ghc/GHCJS/Prim.hs
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module GHCJS.Prim ( module GHCJS.Prim.Internal
, fromJSString
, toJSString
, isNull
, isUndefined
) where
import GHCJS.Prim.Internal
--import Data.Int (Int64)
--import Data.Typeable (Typeable)
--import Unsafe.Coerce (unsafeCoerce)
--import Data.Aeson (ToJSON(..), FromJSON(..))
import qualified Data.Text as T (unpack, pack)
import Data.JSString.Text (textFromJSVal)
--import GHC.Prim
--import qualified GHC.Exception as Ex
--import qualified GHC.Exts as Exts
import Language.Javascript.JSaddle.Types (JSVal(..), JSString(..), GHCJSPure(..), ghcjsPureMap)
import qualified Language.Javascript.JSaddle.Native.Internal as N
(stringToValue, isNull, isUndefined)
{- | Low-level conversion utilities for packages that cannot
depend on ghcjs-base
-}
fromJSString :: JSVal -> GHCJSPure String
fromJSString = ghcjsPureMap T.unpack . textFromJSVal
{-# INLINE fromJSString #-}
toJSString :: String -> GHCJSPure JSVal
toJSString s = GHCJSPure $ N.stringToValue (JSString $ T.pack s)
{-# INLINE toJSString #-}
--fromJSArray :: JSVal -> IO [JSVal]
--fromJSArray = unsafeCoerce . js_fromJSArray
--{-# INLINE fromJSArray #-}
--
--toJSArray :: [JSVal] -> IO JSVal
--toJSArray = js_toJSArray . unsafeCoerce . seqList
--{-# INLINE toJSArray #-}
--
--{- | returns zero if the JSVal does not contain a number
-- -}
--fromJSInt :: JSVal -> Int
--fromJSInt = js_fromJSInt
--{-# INLINE fromJSInt #-}
--
--toJSInt :: Int -> JSVal
--toJSInt = js_toJSInt
--{-# INLINE toJSInt #-}
--
isNull :: JSVal -> GHCJSPure Bool
isNull = GHCJSPure . N.isNull
{-# INLINE isNull #-}
isUndefined :: JSVal -> GHCJSPure Bool
isUndefined = GHCJSPure . N.isUndefined
{-# INLINE isUndefined #-}
--getProp :: JSVal -> String -> IO JSVal
--getProp o p = js_getProp o (unsafeCoerce $ seqList p)
--{-# INLINE getProp #-}
--
--getProp' :: JSVal -> JSVal -> IO JSVal
--getProp' o p = js_getProp' o p
--{-# INLINE getProp' #-}
--
---- reduce the spine and all list elements to whnf
--seqList :: [a] -> [a]
--seqList xs = go xs `seq` xs
-- where go (x:xs) = x `seq` go xs
-- go [] = ()
--
--seqListSpine :: [a] -> [a]
--seqListSpine xs = go xs `seq` xs
-- where go (x:xs) = go xs
-- go [] = ()