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