Navigation.purs
module Aftok.Navigation where
import Prelude
import Data.Either (Either)
import Data.Lens (view)
import Data.Maybe (Maybe)
import URI.URI
( HierPath
, Host
, Path
, Port
, URIOptions
, UserInfo
, parser
, _query
)
import URI.Extra.QueryPairs (QueryPairs, Key, Value)
import URI.Extra.QueryPairs as QueryPairs
import URI.Fragment (Fragment)
import URI.HostPortPair as HostPortPair
import URI.HostPortPair (HostPortPair)
import Text.Parsing.Parser (runParser, ParseError)
parseURIQuery :: String -> Either ParseError (Maybe (QueryPairs Key Value))
parseURIQuery uriStr =
view _query <$> runParser uriStr (parser options)
options ∷ Record (URIOptions UserInfo (HostPortPair Host Port) Path HierPath (QueryPairs Key Value) Fragment)
options =
{ parseUserInfo: pure
, printUserInfo: identity
, parseHosts: HostPortPair.parser pure pure
, printHosts: HostPortPair.print identity identity
, parsePath: pure
, printPath: identity
, parseHierPath: pure
, printHierPath: identity
, parseQuery: QueryPairs.parse pure pure
, printQuery: QueryPairs.print identity identity
, parseFragment: pure
, printFragment: identity
}