----------------------------------------------------------------------------- -- -- Module : Language.Javascript.JSaddle.Classes -- Copyright : (c) Hamish Mackenzie -- License : MIT -- -- Maintainer : Hamish Mackenzie -- -- | 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