{-# LANGUAGE CPP #-}
module GHCJS.Foreign (
jsTrue
, jsFalse
, jsNull
, toJSBool
, jsUndefined
, isTruthy
, isNull
, isUndefined
, isObject
, isFunction
, isString
, isBoolean
, isSymbol
, isNumber
, JSType(..)
, jsTypeOf
) where
import GHCJS.Foreign.Internal
import Language.Javascript.JSaddle.Types (JSVal(..), GHCJSPure(..))
import Language.Javascript.JSaddle.Object (jsg1)
import GHCJS.Marshal (FromJSVal(..))
isObject :: JSVal -> GHCJSPure Bool
isObject :: JSVal -> GHCJSPure Bool
isObject JSVal
v = forall a. JSM a -> GHCJSPure a
GHCJSPure forall a b. (a -> b) -> a -> b
$ forall name a0.
(ToJSString name, ToJSVal a0) =>
name -> a0 -> JSM JSVal
jsg1 String
"h$isObject" JSVal
v forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked
{-# INLINE isObject #-}
isFunction :: JSVal -> GHCJSPure Bool
isFunction :: JSVal -> GHCJSPure Bool
isFunction JSVal
v = forall a. JSM a -> GHCJSPure a
GHCJSPure forall a b. (a -> b) -> a -> b
$ forall name a0.
(ToJSString name, ToJSVal a0) =>
name -> a0 -> JSM JSVal
jsg1 String
"h$isFunction" JSVal
v forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked
{-# INLINE isFunction #-}
isString :: JSVal -> GHCJSPure Bool
isString :: JSVal -> GHCJSPure Bool
isString JSVal
v = forall a. JSM a -> GHCJSPure a
GHCJSPure forall a b. (a -> b) -> a -> b
$ forall name a0.
(ToJSString name, ToJSVal a0) =>
name -> a0 -> JSM JSVal
jsg1 String
"h$isString" JSVal
v forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked
{-# INLINE isString #-}
isBoolean :: JSVal -> GHCJSPure Bool
isBoolean :: JSVal -> GHCJSPure Bool
isBoolean JSVal
v = forall a. JSM a -> GHCJSPure a
GHCJSPure forall a b. (a -> b) -> a -> b
$ forall name a0.
(ToJSString name, ToJSVal a0) =>
name -> a0 -> JSM JSVal
jsg1 String
"h$isBoolean" JSVal
v forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked
{-# INLINE isBoolean #-}
isSymbol :: JSVal -> GHCJSPure Bool
isSymbol :: JSVal -> GHCJSPure Bool
isSymbol JSVal
v = forall a. JSM a -> GHCJSPure a
GHCJSPure forall a b. (a -> b) -> a -> b
$ forall name a0.
(ToJSString name, ToJSVal a0) =>
name -> a0 -> JSM JSVal
jsg1 String
"h$isSymbol" JSVal
v forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked
{-# INLINE isSymbol #-}
isNumber :: JSVal -> GHCJSPure Bool
isNumber :: JSVal -> GHCJSPure Bool
isNumber JSVal
v = forall a. JSM a -> GHCJSPure a
GHCJSPure forall a b. (a -> b) -> a -> b
$ forall name a0.
(ToJSString name, ToJSVal a0) =>
name -> a0 -> JSM JSVal
jsg1 String
"h$isNumber" JSVal
v forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked
{-# INLINE isNumber #-}
jsTypeOf :: JSVal -> GHCJSPure JSType
jsTypeOf :: JSVal -> GHCJSPure JSType
jsTypeOf JSVal
v = forall a. JSM a -> GHCJSPure a
GHCJSPure forall a b. (a -> b) -> a -> b
$ forall a. Enum a => Int -> a
toEnum forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (forall name a0.
(ToJSString name, ToJSVal a0) =>
name -> a0 -> JSM JSVal
jsg1 String
"h$jsonTypeOf" JSVal
v forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)
{-# INLINE jsTypeOf #-}