packages feed

panda-0.0: Panda/Controller/Application.hs

{-# OPTIONS -fno-monomorphism-restriction #-}

module Panda.Controller.Application (pages) where

import Kibro
import Kibro.DB.Sqlite3
import Control.Monad hiding (join)
import Control.Arrow ((>>>))
import Data.List
import Network.URI
import Network.CGI
import Text.Pandoc.UTF8

import MPS
import Prelude hiding ((.), (/), id)

import Panda.Helper.Helper
import Panda.Model.Blog as Blog
import Panda.View.Blog as BlogV
import Panda.View.Template as T
import Panda.View.Static as StaticV
import Panda.Config.Global

blog_regex = "^/[0-9][0-9]-[0-9][0-9]-[0-9][0-9]"
  
pages = 
  [ ("^/$",                 index             )
  , ("^/([?].+$)?$",        index             )
  , ("^/rss.xml$",          blog_feed         )
  , (blog_regex,            blog              )
  , ("^/static/.",          static            )
  , ("^/bench_template",    bench_template    )
  , ("^/bench_io",          bench_io          )
  , ("^/debug",             debug             )
  ]

index = do
  blogs <- Blog.list.liftIO
  p <- pager 10 $ blogs.length
  blogs.BlogV.list p.output_html

blog_feed = do
  blogs <- Blog.list.liftIO
  blogs.BlogV.rss.output

blog = do
  id <- uri <.> ("blog/" ++)
  blog <- Blog.get id .liftIO
  blog.BlogV.view.output_html

static = do
  id <- uri
  (flat_uri / id) .readFile .liftIO <.> StaticV.view >>= output_html

bench_template = T.page "bench me" .output_html
bench_io = readFile "src/Main.hs" .liftIO >>= output

debug = uri >>= output