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