{-# 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