on master help sign in
iOS and Mac OS mainBundleResourcePath
commit81b381d4eece4420b549191d864903fa67a9aeb0 authorHamish Mackenzie <Hamish.K.Mackenzie@googlemail.com> dateMon 13 Feb 2017, 20:36 (10 years ago) parentc6a9964
3 files changed+20−2
jsaddle-wkwebview/cbits/WKWebView.m+8 jsaddle-wkwebview/src-ghc/Language/Javascript/JSaddle/WKWebView.hs+2−1 jsaddle-wkwebview/src/Language/Javascript/JSaddle/WKWebView/Internal.hs+10−1
jsaddle-wkwebview/cbits/WKWebView.m+8
@@ -53,6 +53,14 @@ void loadHTMLString(WKWebView *webView, const char * _Nonnull html) {
5353 [webView loadHTMLString:[NSString stringWithCString:html encoding:NSUTF8StringEncoding] baseURL:NULL];
5454}
5555
56+const char * mainBundleResourcePathC() {
57+ NSBundle *main = [NSBundle mainBundle];
58+ if(!main) return NULL;
59+ NSString *path = main.resourcePath;
60+ if(!path) return NULL;
61+ return [path UTF8String];
62+}
63+
5664void loadBundleFile(WKWebView *webView, const char * _Nonnull file, const char * _Nonnull allowing) {
5765 NSBundle *main = [NSBundle mainBundle];
5866 if(main) {
jsaddle-wkwebview/src-ghc/Language/Javascript/JSaddle/WKWebView.hs+2−1
@@ -4,10 +4,11 @@ module Language.Javascript.JSaddle.WKWebView
44 , WKWebView(..)
55 , run
66 , runFile
7+ , mainBundleResourcePath
78 ) where
89
910import Data.ByteString (ByteString)
10−import Language.Javascript.JSaddle.WKWebView.Internal (jsaddleMain, jsaddleMainFile, WKWebView(..))
11+import Language.Javascript.JSaddle.WKWebView.Internal (jsaddleMain, jsaddleMainFile, WKWebView(..), mainBundleResourcePath)
1112import System.Environment (getProgName)
1213import Foreign.C.String (CString, withCString)
1314import Foreign.StablePtr (StablePtr, newStablePtr)
jsaddle-wkwebview/src/Language/Javascript/JSaddle/WKWebView/Internal.hs+10−1
@@ -3,6 +3,7 @@ module Language.Javascript.JSaddle.WKWebView.Internal
33 ( jsaddleMain
44 , jsaddleMainFile
55 , WKWebView(..)
6+ , mainBundleResourcePath
67 ) where
78
89import Control.Monad (void, join)
@@ -15,7 +16,7 @@ import Data.ByteString.Lazy (ByteString, toStrict, fromStrict)
1516import Data.Aeson (encode, decode)
1617
1718import Foreign.C.String (CString)
18−import Foreign.Ptr (Ptr)
19+import Foreign.Ptr (Ptr, nullPtr)
1920import Foreign.StablePtr (StablePtr, newStablePtr, deRefStablePtr)
2021
2122import Language.Javascript.JSaddle (Results, JSM)
@@ -31,6 +32,7 @@ foreign import ccall addJSaddleHandler :: WKWebView -> StablePtr (IO ()) -> Stab
3132foreign import ccall loadHTMLString :: WKWebView -> CString -> IO ()
3233foreign import ccall loadBundleFile :: WKWebView -> CString -> CString -> IO ()
3334foreign import ccall evaluateJavaScript :: WKWebView -> CString -> IO ()
35+foreign import ccall mainBundleResourcePathC :: IO CString
3436
3537-- | Run JSaddle in WKWebView
3638jsaddleMain :: JSM () -> WKWebView -> IO ()
@@ -99,3 +101,10 @@ indexHtml =
99101 \<body>\n\
100102 \</body>\n\
101103 \</html>"
104+
105+mainBundleResourcePath :: IO (Maybe BS.ByteString)
106+mainBundleResourcePath = do
107+ bs <- mainBundleResourcePathC
108+ if bs == nullPtr
109+ then return Nothing
110+ else Just <$> packCString bs