@hackage urlpath0.0.5

Painfully simple URL writing combinators

Simple URL DSL for Haskell.

Use raw combinators (kinda useless) ...

 render $ "foo.php" <?> ("key1","bar") <&> ("key2","baz")

 ↪ "foo.php?key1=bar&key2=baz"

... or use the MonadReader instance for a configurable root ...

 let url = runReader $ expandAbsolute $ "foo.php" <?> ("key1","bar") <&> ("key2","baz")
 url "example.com"

 ↪ "example.com/foo.php?key1=bar&key2=baz"

... in Lucid ...

 (runReader $ renderTextT $
   (\a -> do
     foo <- lift $ expandAbsolute a
     script_ [src_ foo] "" )
   ("foo" <?> ("bar","baz"))
 ) "example.com"

 ↪ "<script src=\"example.com/foo?bar=baz\"></script>"

... and in Scotty ...

 main :: IO ()
 main = scottyT 3000
     rootConf
     rootConf
     run

   where
     rootConf = flip runReaderT "http://example.com"

     run :: ( MonadIO m
            , MonadReader T.Text m ) =>
            ScottyT LT.Text m ()
     run = get "/" $ do
       path <- lift $ expandAbsolute $ "foo" <?> ("bar","baz")
       text $ LT.fromStrict path

 λ> curl localhost:3000/
 ↪ "http://example.com/foo?bar=baz"