urlpath: Painfully simple URL writing combinators

[ bsd3, data, library, web ] [ Propose Tags ]

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"
Versions [faq] 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.1, 0.1.0.1, 0.2, 1.0.0, 1.1.0, 2.0.0, 2.1.0, 3.0.0, 3.1.0, 3.1.1, 3.2.0, 3.2.1, 3.2.1.1, 3.3.0, 4.0.0, 4.0.0.1, 4.1.0, 4.2.0, 5.0.0, 5.0.0.1, 6.0.0, 6.0.1, 6.0.2, 6.0.3, 6.0.4, 7.0.0, 7.0.1, 7.0.2, 7.1.0, 8.0.0, 8.0.1, 8.1.0, 8.2.0, 9.0.0, 9.0.0.1, 9.0.1 (info)
Dependencies base (==4.*), mtl, text, transformers [details]
License MIT
Author Athan Clark <athan.clark@gmail.com>
Maintainer Athan Clark <athan.clark@gmail.com>
Category Web
Source repo head: git clone https://github.com/athanclark/urlpath.git
Uploaded by athanclark at Wed Dec 10 21:33:28 UTC 2014
Distributions LTSHaskell:9.0.1, NixOS:9.0.1, Stackage:9.0.1
Downloads 10483 total (413 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees