{-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE JavaScriptFFI #-} {-# LANGUAGE DeriveDataTypeable #-} module JavaScript.Web.Location ( Location , getWindowLocation , getHref , setHref , getProtocol , setProtocol , getHost , setHost , getHostname , setHostname , getPort , setPort , getPathname , setPathname , getSearch , setSearch , getHash , setHash , getUsername , setUsername , getPassword , setPassword , getOrigin , assign , reload , replace ) where import Data.Typeable import Data.JSString (JSString) import qualified Data.JSString as JSS import GHCJS.Types newtype Location = Location JSVal deriving (Typeable) instance IsJSVal Location getWindowLocation :: IO Location getWindowLocation = js_getWindowLocation {-# INLINE getWindowLocation #-} getHref :: Location -> IO JSString getHref = js_getHref {-# INLINE getHref #-} setHref :: JSString -> Location -> IO () setHref = js_setHref {-# INLINE setHref #-} getProtocol :: Location -> IO JSString getProtocol = js_getProtocol {-# INLINE getProtocol #-} setProtocol :: JSString -> Location -> IO () setProtocol = js_setProtocol {-# INLINE setProtocol #-} getHost :: Location -> IO JSString getHost = js_getHost {-# INLINE getHost #-} setHost :: JSString -> Location -> IO () setHost = js_setHost {-# INLINE setHost #-} getHostname :: Location -> IO JSString getHostname = js_getHostname {-# INLINE getHostname #-} setHostname :: JSString -> Location -> IO () setHostname = js_setHostname {-# INLINE setHostname #-} getPort :: Location -> IO JSString getPort = js_getPort {-# INLINE getPort #-} setPort :: JSString -> Location -> IO () setPort = js_setPort {-# INLINE setPort #-} getPathname :: Location -> IO JSString getPathname = js_getPathname {-# INLINE getPathname #-} setPathname :: JSString -> Location -> IO () setPathname = js_setPathname {-# INLINE setPathname #-} getSearch :: Location -> IO JSString getSearch = js_getSearch {-# INLINE getSearch #-} setSearch :: JSString -> Location -> IO () setSearch = js_setSearch {-# INLINE setSearch #-} getHash :: Location -> IO JSString getHash = js_getHash {-# INLINE getHash #-} setHash :: JSString -> Location -> IO () setHash = js_setHash {-# INLINE setHash #-} getUsername :: Location -> IO JSString getUsername = js_getUsername {-# INLINE getUsername #-} setUsername :: JSString -> Location -> IO () setUsername = js_setUsername {-# INLINE setUsername #-} getPassword :: Location -> IO JSString getPassword = js_getPassword {-# INLINE getPassword #-} setPassword :: JSString -> Location -> IO () setPassword = js_setPassword {-# INLINE setPassword #-} getOrigin :: Location -> IO JSString getOrigin = js_getUsername {-# INLINE getOrigin #-} assign :: JSString -> Location -> IO () assign = js_assign {-# INLINE assign #-} reload :: Bool -> Location -> IO () reload = js_reload {-# INLINE reload #-} replace :: JSString -> Location -> IO () replace = js_assign {-# INLINE replace #-} ------------------------------------------------------------------------------- foreign import javascript safe "window.location" js_getWindowLocation :: IO Location foreign import javascript unsafe "$1.href" js_getHref :: Location -> IO JSString foreign import javascript unsafe "$1.protocol" js_getProtocol :: Location -> IO JSString foreign import javascript unsafe "$1.host" js_getHost :: Location -> IO JSString foreign import javascript unsafe "$1.hostname" js_getHostname :: Location -> IO JSString foreign import javascript unsafe "$1.port" js_getPort :: Location -> IO JSString foreign import javascript unsafe "$1.pathname" js_getPathname :: Location -> IO JSString foreign import javascript unsafe "$1.search" js_getSearch :: Location -> IO JSString foreign import javascript unsafe "$1.hash" js_getHash :: Location -> IO JSString foreign import javascript unsafe "$1.username" js_getUsername :: Location -> IO JSString foreign import javascript unsafe "$1.password" js_getPassword :: Location -> IO JSString foreign import javascript unsafe "$1.origin" js_getOrigin :: Location -> IO JSString foreign import javascript safe "$2.href = $1;" js_setHref :: JSString -> Location -> IO () foreign import javascript safe "$2.protocol = $1;" js_setProtocol :: JSString -> Location -> IO () foreign import javascript safe "$2.host = $1;" js_setHost :: JSString -> Location -> IO () foreign import javascript safe "$2.hostname = $1;" js_setHostname :: JSString -> Location -> IO () foreign import javascript safe "$2.port = $1;" js_setPort :: JSString -> Location -> IO () foreign import javascript safe "$2.pathname = $1;" js_setPathname :: JSString -> Location -> IO () foreign import javascript safe "$2.search = $1;" js_setSearch :: JSString -> Location -> IO () foreign import javascript safe "$2.hash = $1;" js_setHash :: JSString -> Location -> IO () foreign import javascript safe "$2.username = $1;" js_setUsername :: JSString -> Location -> IO () foreign import javascript safe "$2.password = $1;" js_setPassword :: JSString -> Location -> IO () foreign import javascript safe "$2.assign($1);" js_assign :: JSString -> Location -> IO () foreign import javascript safe "$2.reload($1);" js_reload :: Bool -> Location -> IO () foreign import javascript safe "$2.replace($1);" js_replace :: JSString -> Location -> IO ()