-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Extra javascript functions when using GHCJS
--
-- Extra javascript functions when using GHCJS
@package javascript-extras
@version 0.2.0.0
module JavaScript.Extras.Recast
-- | This provides a consistent way to convert to JSVal, with different
-- semantics for Char. In the Char's instance of ToJS, it converts to a
-- string instead of integer - IMHO this is less surprising.
--
-- The other reason for this class is while GHCJS base provide both
-- IsJSVal and PToJSVal to convert to jsval, some types are instances of
-- one or the other class. This means you can't use the "Maybe a"
-- instance of PToJSVal if it contains IsISJVal but not pToJSVal.
class ToJS a where toJS = jsval
-- | This is a pure conversion, so instances must be able to convert the
-- same or equivalent JSVal each time.
toJS :: ToJS a => a -> JSVal
-- | This is a pure conversion, so instances must be able to convert the
-- same or equivalent JSVal each time.
toJS :: (ToJS a, IsJSVal a) => a -> JSVal
-- | This provides a consistent way to safely convert from JSVal. The
-- semantics is that if the return value is a Just, then the JSVal is not
-- a null value. Also, Nothing is also returned for values out of range.
-- They are not silently truncated. (Except for Float where there may be
-- loss of precision) during conversion.
--
-- The reason for this class is because GHCJS.Marshal.fromJSVal and
-- GHCJS.Marshal.pFromJSVal are not safe to use as it assumes that the
-- JSVal are of the correct type and not null.
-- (https:/github.comghcjsghcjs-baseissues/87). The safe
-- way to convert from JSVal is to use JavaScript.Cast or to use the
-- 'Maybe a' instance of FromJSVal, ie fromJSVal :: JSVal -> IO
-- (Maybe (Maybe a)), which is a bit more awkward to use. Also,
-- Javascript.Cast doesn't have much instances, and it hardcodes the
-- instance detection method to javascript isinstance which is
-- not sufficient for complex types
-- (https:/github.comghcjsghcjs-baseissues/86).
class FromJS a
-- | This is an IO because since JSVal is mutable, this function may
-- different results for the same JSVal at later points in time.
fromJS :: FromJS a => JSVal -> IO (Maybe a)
instance JavaScript.Extras.Recast.ToJS GHCJS.Prim.JSVal
instance JavaScript.Extras.Recast.ToJS (GHCJS.Foreign.Callback.Internal.Callback a)
instance JavaScript.Extras.Recast.ToJS (GHCJS.Foreign.Export.Export a)
instance JavaScript.Extras.Recast.ToJS (GHCJS.Nullable.Nullable a)
instance JavaScript.Extras.Recast.ToJS (JavaScript.Array.Internal.SomeJSArray m)
instance JavaScript.Extras.Recast.ToJS JavaScript.Object.Internal.Object
instance JavaScript.Extras.Recast.ToJS GHC.Types.Bool
instance JavaScript.Extras.Recast.ToJS GHC.Types.Char
instance JavaScript.Extras.Recast.ToJS GHC.Types.Double
instance JavaScript.Extras.Recast.ToJS GHC.Types.Float
instance JavaScript.Extras.Recast.ToJS GHC.Types.Int
instance JavaScript.Extras.Recast.ToJS GHC.Int.Int8
instance JavaScript.Extras.Recast.ToJS GHC.Int.Int16
instance JavaScript.Extras.Recast.ToJS GHC.Int.Int32
instance JavaScript.Extras.Recast.ToJS GHC.Types.Word
instance JavaScript.Extras.Recast.ToJS GHC.Word.Word8
instance JavaScript.Extras.Recast.ToJS GHC.Word.Word16
instance JavaScript.Extras.Recast.ToJS GHC.Word.Word32
instance JavaScript.Extras.Recast.ToJS Data.Text.Internal.Text
instance JavaScript.Extras.Recast.ToJS [GHC.Types.Char]
instance JavaScript.Extras.Recast.ToJS Data.JSString.Internal.Type.JSString
instance JavaScript.Extras.Recast.ToJS a => JavaScript.Extras.Recast.ToJS (GHC.Base.Maybe a)
instance JavaScript.Extras.Recast.FromJS GHCJS.Prim.JSVal
instance JavaScript.Extras.Recast.FromJS (JavaScript.Array.Internal.SomeJSArray m)
instance JavaScript.Extras.Recast.FromJS JavaScript.Object.Internal.Object
instance JavaScript.Extras.Recast.FromJS GHC.Types.Bool
instance JavaScript.Extras.Recast.FromJS GHC.Types.Char
instance JavaScript.Extras.Recast.FromJS GHC.Types.Double
instance JavaScript.Extras.Recast.FromJS GHC.Types.Float
instance JavaScript.Extras.Recast.FromJS GHC.Types.Int
instance JavaScript.Extras.Recast.FromJS GHC.Int.Int8
instance JavaScript.Extras.Recast.FromJS GHC.Int.Int16
instance JavaScript.Extras.Recast.FromJS GHC.Int.Int32
instance JavaScript.Extras.Recast.FromJS GHC.Types.Word
instance JavaScript.Extras.Recast.FromJS GHC.Word.Word8
instance JavaScript.Extras.Recast.FromJS GHC.Word.Word16
instance JavaScript.Extras.Recast.FromJS GHC.Word.Word32
instance JavaScript.Extras.Recast.FromJS Data.Text.Internal.Text
instance JavaScript.Extras.Recast.FromJS [GHC.Types.Char]
instance JavaScript.Extras.Recast.FromJS Data.JSString.Internal.Type.JSString
module JavaScript.Extras.String
-- | This makes it easier to use OverloadedStrings with inputs that accept
-- a JSVal that could be a JSString Less verbose version of'toJS
-- @JSString'
strJS :: JSString -> JSVal
-- | This makes it easier to use OverloadedStrings with inputs that accept
-- a JSVal that could be a Data.Text Less verbose version of'toJS @Text'
txtJS :: Text -> JSVal
-- | This makes it easier to use OverloadedStrings with inputs that accept
-- a JSVal that could be a [String] Less verbose version of'toJS @Jtring'
strJS' :: [Char] -> JSVal
module JavaScript.Extras.Property
type Property = (JSString, JSVal)
-- | get a property of any JSVal. If a null or undefined is queried, the
-- result will also be null
getProperty :: JSString -> JSVal -> IO JSVal
-- | set a property of any JSVal
setProperty :: Property -> JSVal -> IO ()
fromProperties :: [Property] -> Object
toProperties :: Object -> IO [Property]
module JavaScript.Extras