jsaddle 0.9.8.3 → 0.9.9.0
raw patch · 7 files changed
+133/−25 lines, 7 filesdep ~containersdep ~primitive
Dependency ranges changed: containers, primitive
Files
- jsaddle.cabal +9/−6
- src-ghc/JavaScript/TypedArray/DataView/Internal.hs +0/−1
- src/Language/Javascript/JSaddle/Evaluate.hs +6/−1
- src/Language/Javascript/JSaddle/Exception.hs +4/−0
- src/Language/Javascript/JSaddle/Object.hs +52/−4
- src/Language/Javascript/JSaddle/Properties.hs +12/−2
- src/Language/Javascript/JSaddle/Value.hs +50/−11
jsaddle.cabal view
@@ -1,5 +1,5 @@ name: jsaddle-version: 0.9.8.3+version: 0.9.9.0 cabal-version: >=1.10 build-type: Simple license: MIT@@ -29,14 +29,17 @@ library - if impl(ghcjs -any)+ if impl(ghcjs -any) || arch(javascript) build-depends:- ghcjs-base -any,- ghcjs-prim -any+ ghcjs-base -any+ -- GHC includes GHC.JS.Prim in base+ if impl(ghcjs -any)+ build-depends:+ ghcjs-prim -any else build-depends: attoparsec >=0.11 && <0.15,- containers >=0.5.6.2 && <0.7,+ containers >=0.5.6.2 && <0.8, deepseq >=1.3 && < 1.6, filepath >=1.4.0.0 && <1.5, ghc-prim,@@ -114,7 +117,7 @@ bytestring >=0.10.6.0 && <0.13, exceptions >=0.8 && <0.11, lens >=3.8.5 && <5.3,- primitive >=0.6.1.0 && <0.9,+ primitive >=0.6.1.0 && <0.10, text >=1.2.1.3 && <1.3 || >= 2.0 && < 2.2, transformers >=0.4.2.0 && <0.7 default-language: Haskell2010
src-ghc/JavaScript/TypedArray/DataView/Internal.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE JavaScriptFFI #-} {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE UnliftedFFITypes #-} {-# LANGUAGE GHCForeignImportPrim #-}
src/Language/Javascript/JSaddle/Evaluate.hs view
@@ -50,7 +50,12 @@ -> JSM JSVal #ifdef ghcjs_HOST_OS eval script = liftIO $ js_eval (toJSString script)-foreign import javascript safe "$r = eval($1);"+foreign import javascript safe+#if __GLASGOW_HASKELL__ >= 900+ "(($1) => { return eval($1); })"+#else+ "$r = eval($1);"+#endif js_eval :: JSString -> IO JSVal #else eval = evaluateScript . toJSString
src/Language/Javascript/JSaddle/Exception.hs view
@@ -19,7 +19,11 @@ import qualified Control.Exception as E (Exception) #ifdef ghcjs_HOST_OS+#if __GLASGOW_HASKELL__ >= 900+import GHC.JS.Prim (JSVal)+#else import GHCJS.Prim (JSVal)+#endif #else import GHCJS.Prim.Internal (JSVal) #endif
src/Language/Javascript/JSaddle/Object.hs view
@@ -102,7 +102,11 @@ import Data.Coerce (coerce) #ifdef ghcjs_HOST_OS import GHCJS.Types (nullRef)+#if __GLASGOW_HASKELL__ >= 900+import GHC.JS.Foreign.Callback+#else import GHCJS.Foreign.Callback+#endif (releaseCallback, syncCallback2, asyncCallback2, OnBlocked(..), Callback) import GHCJS.Marshal (ToJSVal(..)) import JavaScript.Array (MutableJSArray)@@ -440,7 +444,13 @@ #ifdef ghcjs_HOST_OS-foreign import javascript unsafe "$r = function () { $1(this, arguments); }"+-- Do not replace `function ()` with `=>` as `arguments` will not work+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1) => { return function () { $1(this, arguments); }; })"+#else+ "$r = function () { $1(this, arguments); }"+#endif makeFunctionWithCallback :: Callback (JSVal -> JSVal -> IO ()) -> IO Object #endif @@ -527,7 +537,12 @@ -- | JavaScript's global object #ifdef ghcjs_HOST_OS-foreign import javascript unsafe "$r = globalThis"+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(() => { return globalThis; })"+#else+ "$r = globalThis"+#endif global :: Object #else global :: Object@@ -556,7 +571,12 @@ objCallAsFunction f this args = do rargs <- makeArgs args >>= liftIO . Array.fromListIO liftIO $ js_apply f this rargs-foreign import javascript safe "$r = $1.apply($2, $3)"+foreign import javascript safe+#if __GLASGOW_HASKELL__ >= 900+ "(($1,$2,$3) => { return $1.apply($2, $3); })"+#else+ "$r = $1.apply($2, $3)"+#endif js_apply :: Object -> Object -> MutableJSArray -> IO JSVal #else objCallAsFunction f this args = do@@ -576,7 +596,9 @@ objCallAsConstructor f args = do rargs <- makeArgs args >>= liftIO . Array.fromListIO liftIO $ js_new f rargs-foreign import javascript safe "\+foreign import javascript safe+#if __GLASGOW_HASKELL__ >= 900+ "(($1,$2) => {\ switch($2.length) {\ case 0 : $r = new $1(); break;\ case 1 : $r = new $1($2[0]); break;\@@ -598,7 +620,33 @@ i.constructor = $1;\ $r = i;\ }\+ }\+ return $r;\+ })"+#else+ "switch($2.length) {\+ case 0 : $r = new $1(); break;\+ case 1 : $r = new $1($2[0]); break;\+ case 2 : $r = new $1($2[0],$2[1]); break;\+ case 3 : $r = new $1($2[0],$2[1],$2[2]); break;\+ case 4 : $r = new $1($2[0],$2[1],$2[2],$2[3]); break;\+ case 5 : $r = new $1($2[0],$2[1],$2[2],$2[3],$2[4]); break;\+ case 6 : $r = new $1($2[0],$2[1],$2[2],$2[3],$2[4],$2[5]); break;\+ case 7 : $r = new $1($2[0],$2[1],$2[2],$2[3],$2[4],$2[5],$2[6]); break;\+ default:\+ var temp = function() {\+ ret = $1.apply(this, $2);\+ };\+ temp.prototype = $1.prototype;\+ var i = new temp();\+ if(ret instanceof Object) {\+ $r = ret;\+ } else {\+ i.constructor = $1;\+ $r = i;\+ }\ }"+#endif js_new :: Object -> MutableJSArray -> IO JSVal #else objCallAsConstructor f args = do
src/Language/Javascript/JSaddle/Properties.hs view
@@ -60,7 +60,12 @@ -> JSM JSVal -- ^ returns the property value. #ifdef ghcjs_HOST_OS objGetPropertyAtIndex this index = js_tryIndex index this-foreign import javascript unsafe "$r=$2[$1]"+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1,$2) => { return $2[$1]; })"+#else+ "$r=$2[$1]"+#endif js_tryIndex :: Int -> Object -> IO JSVal #else objGetPropertyAtIndex this index =@@ -87,7 +92,12 @@ objSetPropertyAtIndex this index val = do vref <- toJSVal val js_trySetAtIndex index this vref-foreign import javascript unsafe "$2[$1]=$3"+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1,$2,$3) => { return $2[$1]=$3; })"+#else+ "$2[$1]=$3"+#endif js_trySetAtIndex :: Int -> Object -> JSVal -> IO () #else objSetPropertyAtIndex this index val =
src/Language/Javascript/JSaddle/Value.hs view
@@ -189,8 +189,14 @@ valToNumber :: ToJSVal value => value -> JSM Double #ifdef ghcjs_HOST_OS valToNumber value = jsrefToNumber <$> toJSVal value-foreign import javascript unsafe "$r = Number($1);" jsrefToNumber :: JSVal -> Double+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1) => { return Number($1); })" #else+ "$r = Number($1);"+#endif+ jsrefToNumber :: JSVal -> Double+#else valToNumber value = toJSVal value >>= valueToNumber #endif @@ -216,8 +222,14 @@ valToStr :: ToJSVal value => value -> JSM JSString #ifdef ghcjs_HOST_OS valToStr value = jsrefToString <$> toJSVal value-foreign import javascript unsafe "$r = $1.toString();" jsrefToString :: JSVal -> JSString+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1) => { return $1.toString(); })" #else+ "$r = $1.toString();"+#endif+ jsrefToString :: JSVal -> JSString+#else valToStr value = toJSVal value >>= valueToString #endif @@ -267,8 +279,14 @@ valToJSON :: ToJSVal value => value -> JSM JSString #ifdef ghcjs_HOST_OS valToJSON value = jsrefToJSON <$> toJSVal value-foreign import javascript unsafe "$r = $1 === undefined ? \"\" : JSON.stringify($1);" jsrefToJSON :: JSVal -> JSString+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1) => { return $1 === undefined ? \"\" : JSON.stringify($1); })" #else+ "$r = $1 === undefined ? \"\" : JSON.stringify($1);"+#endif+ jsrefToJSON :: JSVal -> JSString+#else valToJSON value = toJSVal value >>= valueToJSON #endif @@ -611,13 +629,24 @@ 4 -> ValString <$> valToText valref 5 -> ValObject <$> valToObject valref _ -> error "Unexpected result dereferencing JSaddle value"-foreign import javascript unsafe "$r = ($1 === undefined)?0:\- ($1===null)?1:\- (typeof $1===\"boolean\")?2:\- (typeof $1===\"number\")?3:\- (typeof $1===\"string\")?4:\- (typeof $1===\"object\")?5:-1;" jsrefGetType :: JSVal -> Int+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1) => { return ($1 === undefined)?0:\+ ($1===null)?1:\+ (typeof $1===\"boolean\")?2:\+ (typeof $1===\"number\")?3:\+ (typeof $1===\"string\")?4:\+ (typeof $1===\"object\")?5:-1; })" #else+ "$r = ($1 === undefined)?0:\+ ($1===null)?1:\+ (typeof $1===\"boolean\")?2:\+ (typeof $1===\"number\")?3:\+ (typeof $1===\"string\")?4:\+ (typeof $1===\"object\")?5:-1;"+#endif+ jsrefGetType :: JSVal -> Int+#else deRefVal value = do v <- toJSVal value result <- N.deRefVal v@@ -669,8 +698,13 @@ #ifdef ghcjs_HOST_OS foreign import javascript unsafe- "$1===$2" jsvalueisstrictequal :: JSVal -> JSVal -> Bool+#if __GLASGOW_HASKELL__ >= 900+ "(($1,$2) => { return $1===$2; })"+#else+ "$1===$2" #endif+ jsvalueisstrictequal :: JSVal -> JSVal -> Bool+#endif -- | Determine if two values are equal (JavaScripts ===) -- >>> testJSaddle $ strictEqual True False@@ -692,7 +726,12 @@ #endif #ifdef ghcjs_HOST_OS-foreign import javascript unsafe "$1 instanceof $2"+foreign import javascript unsafe+#if __GLASGOW_HASKELL__ >= 900+ "(($1,$2) => { return $1 instanceof $2; })"+#else+ "$1 instanceof $2"+#endif js_isInstanceOf :: JSVal -> Object -> Bool #endif