jsaddle-0.1.1.3: src/Language/Javascript/JSaddle/Classes.hs
-----------------------------------------------------------------------------
--
-- Module : Language.Javascript.JSaddle.Classes
-- Copyright : (c) Hamish Mackenzie
-- License : MIT
--
-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
--
-- | These classes are used to make various JavaScript types
-- out of whatever we have. Functions in jsaddle take these as inputs.
-- This alows implicit casting and eager evaluation.
--
-----------------------------------------------------------------------------
module Language.Javascript.JSaddle.Classes (
-- * Type classes to convert Haskell data to JavaScript
MakeValueRef(..)
, MakeStringRef(..)
, MakeArgRefs(..)
, MakeObjectRef(..)
, MakePropRef(..)
) where
import Control.Monad.IO.Class (MonadIO)
import Language.Javascript.JSaddle.Types
(JSObjectRef, JSStringRef, JSValueRef)
import Language.Javascript.JSaddle.Monad (JSM)
import Language.Javascript.JSaddle.PropRef (JSPropRef)
-- | Anything that can be used to make a JavaScript value reference
class MakeValueRef a where
makeValueRef :: a -> JSM JSValueRef
-- | Anything that can be used to make a JavaScript string reference
class MakeStringRef a where
makeStringRef :: a -> JSStringRef
-- | Anything that can be used to make a list of JavaScript value
-- references for use as function arguments
class MakeArgRefs this where
makeArgRefs :: this -> JSM [JSValueRef]
-- | Anything that can be used to make a JavaScript object reference
class MakeObjectRef this where
makeObjectRef :: this -> JSM JSObjectRef
-- | Anything that can be used to make a JavaScript property reference
class MakePropRef this where
makePropRef :: this -> JSM JSPropRef