{-# 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 v = GHCJSPure $ jsg1 "h$isObject" v >>= fromJSValUnchecked
{-# INLINE isObject #-}
isFunction :: JSVal -> GHCJSPure Bool
isFunction v = GHCJSPure $ jsg1 "h$isFunction" v >>= fromJSValUnchecked
{-# INLINE isFunction #-}
isString :: JSVal -> GHCJSPure Bool
isString v = GHCJSPure $ jsg1 "h$isString" v >>= fromJSValUnchecked
{-# INLINE isString #-}
isBoolean :: JSVal -> GHCJSPure Bool
isBoolean v = GHCJSPure $ jsg1 "h$isBoolean" v >>= fromJSValUnchecked
{-# INLINE isBoolean #-}
isSymbol :: JSVal -> GHCJSPure Bool
isSymbol v = GHCJSPure $ jsg1 "h$isSymbol" v >>= fromJSValUnchecked
{-# INLINE isSymbol #-}
isNumber :: JSVal -> GHCJSPure Bool
isNumber v = GHCJSPure $ jsg1 "h$isNumber" v >>= fromJSValUnchecked
{-# INLINE isNumber #-}
jsTypeOf :: JSVal -> GHCJSPure JSType
jsTypeOf v = GHCJSPure $ toEnum <$> (jsg1 "h$jsonTypeOf" v >>= fromJSValUnchecked)
{-# INLINE jsTypeOf #-}