The loli package

[Tags: bsd3, deprecated, library]

Deprecated in favor of miku

A simple and easy to use library for fast web prototyping in Haskell.


[Skip to ReadMe]

Properties

Versions2009.6.25, 2009.6.26, 2009.6.27, 2009.6.29, 2009.7.2, 2009.8.16, 2009.8.18, 2009.10.13, 2010.10.9, 2011.6.24
Change logchangelog.md
Dependenciesbase (>4 && <=5), bytestring, containers, data-default, hack (>=2009.5.19), hack-contrib (>=2009.6.25), mps (>=2009.6.25), mtl, template, utf8-string [details]
LicenseBSD3
AuthorWang, Jinjing
MaintainerWang, Jinjing <nfjinjing@gmail.com>
CategoryWeb
Home pagehttp://github.com/nfjinjing/loli
UploadedFri Jun 26 16:16:13 UTC 2009 by JinjingWang
DistributionsNixOS:2011.6.24
Downloads1361 total (85 in last 30 days)
Votes
0 []
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for loli-2009.6.27

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!