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