loli-2009.6.27: readme.md
# loli
A minimum web dev DSL
## Example
First app
-- myloli.hs
import Network.Loli
import Hack.Handler.Happstack
main = run . loli $ get "/" (text "loli power")
Install and compile:
cabal update
cabal install loli
cabal install hack-handler-happstack
ghc --make myloli.hs
./myloli
check: <http://localhost:3000>
## Routes
### Verb
get "/" $ do
-- something for a get request
post "/" $ do
-- for a post request
put "/" $ do
-- put ..
delete "/" $ do
-- ..
### Captures
get "/say/:user/:something" $ do
text . show =<< captures
-- /say/jinjing/hello will output
-- [("user","jinjing"),("something","hello")]
## Static
-- public serve, only allows /src
public (Just ".") ["/src"]
## Views
-- in `./views`, can be changed by
views "template"
### Text Template
import Network.Loli.Template.TextTemplate
-- template
get "/hi/:user" $ text_template "hello.html"
-- in hello.html
<html>
<title>hello</title>
<body>
<p>hello $user</p>
</body>
</html>
### Local bindings
get "/local-binding" $ do
bind "user" "alice" (text_template "hello.html")
### Batched local bindings
get "/batched-local-binding" $ do
context [("user", "alice"), ("password", "foo")] $
text . show =<< bindings
## Mime types
-- treat .hs extension as text/plain
mime "hs" "text/plain"
## Note
If you see this, use the git version!