packages feed

panda-0.0: Panda/Model/Blog.hs

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

module Panda.Model.Blog (
  get, list, title, body, uid, date, parse_date
) where

import Kibro hiding (title, body)
import Network.URI
import Network.CGI
import Text.Pandoc.UTF8
import Control.Arrow ((>>>))
import Control.Monad hiding (join)
import System.Directory
import Data.List
import Data.Maybe

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

import Panda.Helper.Helper
import Panda.Config.Global
import System.Locale
import System.Time.Parse

data Blog = Blog 
  { uid :: String     -- blog/08-09-04 blog title
  , title :: String
  , body :: String 
  }
  deriving (Show, Eq)

list = do
  ids <- getDirectoryContents blog_uri <.> (\\ [".", ".."]) <.> rsort <.> map ("" / "blog" /)
  mapM get ids

get id       = liftM (Blog id (get_title id) ) (get_body id)
get_title id = id.fromUTF8.words.tail.join " "
get_body id  = (flat_uri / id) .readFile

parse_date = parseCalendarTime defaultTimeLocale "%Y-%m-%d"
date x = case x.uid.fromUTF8.words.first.split "/".last.("20"++).parse_date of
  Nothing -> parse_date "2000-1-1".fromJust
  Just x -> x