| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Javascript.JSaddle.Value
Contents
Description
Deals with JavaScript values. These can be
- null
- undefined
- true | false
- a double precision floating point number
- a string
- an object
- type JSValueRef = Ptr OpaqueJSValue
- class MakeValueRef a where
- makeValueRef :: a -> JSM JSValueRef
- data JSNull = JSNull
- type JSUndefined = ()
- type JSBool = Bool
- type JSNumber = Double
- type JSString = Text
- data JSValue
- valToBool :: MakeValueRef val => val -> JSM JSBool
- valToNumber :: MakeValueRef val => val -> JSM JSNumber
- valToStr :: MakeValueRef val => val -> JSM JSStringRef
- valToObject :: MakeValueRef val => val -> JSM JSObjectRef
- valToText :: MakeValueRef val => val -> JSM Text
- valToJSON :: MakeValueRef val => Word -> val -> JSM JSStringRef
- val :: MakeValueRef value => value -> JSM JSValueRef
- valMakeNull :: JSM JSValueRef
- valMakeUndefined :: JSM JSValueRef
- valMakeBool :: JSBool -> JSM JSValueRef
- valMakeNumber :: JSNumber -> JSM JSValueRef
- valMakeString :: Text -> JSM JSValueRef
- deRefVal :: MakeValueRef val => val -> JSM JSValue
- valMakeRef :: JSValue -> JSM JSValueRef
JavaScript value references
type JSValueRef = Ptr OpaqueJSValue
class MakeValueRef a where Source
Anything that can be used to make a JavaScript value reference
Methods
makeValueRef :: a -> JSM JSValueRef Source
Instances
| MakeValueRef Bool | Make a JavaScript boolean value |
| MakeValueRef Double | Makes a JavaScript number |
| MakeValueRef String | Makes a JavaScript string |
| MakeValueRef Text | Makes a JavaScript string |
| MakeValueRef JSValueRef | If we already have a JSValueRef we are fine |
| MakeValueRef JSPropRef | We can use a property as a value. |
| MakeValueRef JSValue | Makes a JavaScript value from a |
| MakeValueRef JSUndefined | Makes an |
| MakeValueRef JSNull | Makes a |
| MakeValueRef JSCallAsFunction | A callback to Haskell can be used as a JavaScript value. This will create
an anonymous JavaScript function object. Use |
| MakeValueRef v => MakeValueRef (JSM v) | JSValueRef can be made by evaluating a function in |
Haskell types for JavaScript values
Constructors
| JSNull | Type that represents a value that can only be null. Haskell of course has no null so we are adding this type. |
Instances
| MakeObjectRef JSNull | |
| MakeArgRefs JSNull | Makes an argument list with just a single |
| MakeValueRef JSNull | Makes a |
type JSUndefined Source
Arguments
| = () | A type that can only be undefined in JavaScript. Using () because functions in JavaScript that have no return, impicitly return undefined. |
An algebraic data type that can represent a JavaScript value. Any JavaScriptCore
JSValueRef can be converted into this type.
Constructors
| ValNull | null |
| ValUndefined | undefined |
| ValBool JSBool | true or false |
| ValNumber JSNumber | a number |
| ValString JSString | a string |
| ValObject JSObjectRef | an object |
Instances
| Eq JSValue | |
| Show JSValue | |
| MakeArgRefs JSValue | Makes an argument list with just a single JavaScript value from a |
| MakeValueRef JSValue | Makes a JavaScript value from a |
Converting JavaScript values
valToBool :: MakeValueRef val => val -> JSM JSBool Source
Given a JavaScript value get its boolean value. All values in JavaScript convert to bool.
>>>testJSaddle $ valToBool JSNullfalse>>>testJSaddle $ valToBool ()false>>>testJSaddle $ valToBool Truetrue>>>testJSaddle $ valToBool Falsefalse>>>testJSaddle $ valToBool (1.0 :: Double)true>>>testJSaddle $ valToBool (0.0 :: Double)false>>>testJSaddle $ valToBool ""false>>>testJSaddle $ valToBool "1"true
valToNumber :: MakeValueRef val => val -> JSM JSNumber Source
Given a JavaScript value get its numeric value. May throw JSException.
>>>testJSaddle $ show <$> valToNumber JSNull0.0>>>testJSaddle $ show <$> valToNumber ()NaN>>>testJSaddle $ show <$> valToNumber True1.0>>>testJSaddle $ show <$> valToNumber False0.0>>>testJSaddle $ show <$> valToNumber (1.0 :: Double)1.0>>>testJSaddle $ show <$> valToNumber (0.0 :: Double)0.0>>>testJSaddle $ show <$> valToNumber ""0.0>>>testJSaddle $ show <$> valToNumber "1"1.0
valToStr :: MakeValueRef val => val -> JSM JSStringRef Source
Given a JavaScript value get its string value (as a JavaScript string). May throw JSException.
>>>testJSaddle $ valToStr JSNull >>= strToTextnull>>>testJSaddle $ valToStr () >>= strToTextundefined>>>testJSaddle $ valToStr True >>= strToTexttrue>>>testJSaddle $ valToStr False >>= strToTextfalse>>>testJSaddle $ valToStr (1.0 :: Double) >>= strToText1>>>testJSaddle $ valToStr (0.0 :: Double) >>= strToText0>>>testJSaddle $ valToStr "" >>= strToText
>>>testJSaddle $ valToStr "1" >>= strToText1
valToObject :: MakeValueRef val => val -> JSM JSObjectRef Source
Given a JavaScript value get its object value. May throw JSException.
>>>testJSaddle $ (valToObject JSNull >>= valToText) `catch` \ (JSException e) -> valToText eTypeError: 'null' is not an object>>>testJSaddle $ (valToObject () >>= valToText) `catch` \ (JSException e) -> valToText eTypeError: 'undefined' is not an object>>>testJSaddle $ valToObject Truetrue>>>testJSaddle $ valToObject Falsefalse>>>testJSaddle $ valToObject (1.0 :: Double)1>>>testJSaddle $ valToObject (0.0 :: Double)0>>>testJSaddle $ valToObject ""
>>>testJSaddle $ valToObject "1"1
valToText :: MakeValueRef val => val -> JSM Text Source
Given a JavaScript value get its string value (as a Haskell Text).
May throw JSException.
>>>testJSaddle $ show <$> valToText JSNull"null">>>testJSaddle $ show <$> valToText ()"undefined">>>testJSaddle $ show <$> valToText True"true">>>testJSaddle $ show <$> valToText False"false">>>testJSaddle $ show <$> valToText (1.0 :: Double)"1">>>testJSaddle $ show <$> valToText (0.0 :: Double)"0">>>testJSaddle $ show <$> valToText """">>>testJSaddle $ show <$> valToText "1""1"
valToJSON :: MakeValueRef val => Word -> val -> JSM JSStringRef Source
Given a JavaScript value get a JSON string value. May throw JSException.
>>>testJSaddle $ valToJSON 0 JSNull >>= strToTextnull>>>testJSaddle $ valToJSON 0 () >>= strToText
>>>testJSaddle $ valToJSON 0 True >>= strToTexttrue>>>testJSaddle $ valToJSON 0 False >>= strToTextfalse>>>testJSaddle $ valToJSON 0 (1.0 :: Double) >>= strToText1>>>testJSaddle $ valToJSON 0 (0.0 :: Double) >>= strToText0>>>testJSaddle $ valToJSON 0 "" >>= strToText"">>>testJSaddle $ valToJSON 0 "1" >>= strToText"1">>>testJSaddle $ obj >>= valToJSON 0 >>= strToText{}
Make JavaScript values from Haskell ones
Arguments
| :: MakeValueRef value | |
| => value | value to convert to a JavaScript value |
| -> JSM JSValueRef |
Convert to a JavaScript value (just an alias for makeValueRef)
valMakeNull :: JSM JSValueRef Source
Make a null JavaScript value
valMakeUndefined :: JSM JSValueRef Source
Make an undefined JavaScript value
valMakeBool :: JSBool -> JSM JSValueRef Source
Make a JavaScript boolean value
valMakeNumber :: JSNumber -> JSM JSValueRef Source
Make a JavaScript number
valMakeString :: Text -> JSM JSValueRef Source
Make a JavaScript string
Conver to and from JSValue
deRefVal :: MakeValueRef val => val -> JSM JSValue Source
Derefernce a value reference.
>>>testJSaddle $ show <$> deRefVal JSNullValNull>>>testJSaddle $ show <$> deRefVal ()ValUndefined>>>testJSaddle $ show <$> deRefVal TrueValBool True>>>testJSaddle $ show <$> deRefVal FalseValBool False>>>testJSaddle $ show <$> deRefVal (1.0 :: Double)ValNumber 1.0>>>testJSaddle $ show <$> deRefVal (0.0 :: Double)ValNumber 0.0>>>testJSaddle $ show <$> deRefVal ""ValString "">>>testJSaddle $ show <$> deRefVal "1"ValString "1">>>testJSaddle $ show <$> valToObject True >>= deRefValValObject 0x...
valMakeRef :: JSValue -> JSM JSValueRef Source
Make a JavaScript value out of a JSValue ADT.
>>>testJSaddle $ valMakeRef ValNull"null">>>testJSaddle $ valMakeRef ValUndefined"undefined">>>testJSaddle $ valMakeRef (ValBool True)"true">>>testJSaddle $ valMakeRef (ValNumber 1)"1">>>testJSaddle $ valMakeRef (ValString $ pack "Hello")"Hello"