packages feed

muon 0.1.0.2 → 0.1.0.3

raw patch · 9 files changed

+51/−27 lines, 9 filesdep +ConfigFiledep +MissingH

Dependencies added: ConfigFile, MissingH

Files

muon.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/  name:                muon-version:             0.1.0.2+version:             0.1.0.3 synopsis:            Static blog generator description:     Program which takes blog posts and pages written in Markdown and@@ -27,6 +27,7 @@                      def/posts/*.post                      def/pages/about                      def/pages/contact+                     def/config.ini extra-source-files:  src/*.hs README  source-repository head@@ -35,5 +36,5 @@  executable muon   main-is:             Main.hs-  build-depends:       base ==4.6.*, text ==0.11.*, HStringTemplate ==0.7.*, directory ==1.2.*, Glob ==0.7.*, process ==1.2.*, blaze-html ==0.7.*, markdown ==0.1.*+  build-depends:       base ==4.6.*, text ==0.11.*, HStringTemplate ==0.7.*, directory ==1.2.*, Glob ==0.7.*, process ==1.2.*, blaze-html ==0.7.*, markdown ==0.1.*, ConfigFile==1.1.*, MissingH==1.2.*   hs-source-dirs:      src
src/Archive.hs view
@@ -28,14 +28,15 @@             ++ unlines (map makeTableRow ps)             ++ "</table>" -renderGenericArchive t c = render-                         $ setAttribute "site" defaultSite+renderGenericArchive s t c = render+                         $ setAttribute "site" s                          $ setAttribute "content" c t  renderArchive = do     ps <- getAllPosts     t <- archiveTemplate-    return $ renderGenericArchive t (makeTable $ reverse ps)+    s <- readSite+    return $ renderGenericArchive s t (makeTable $ reverse ps)  writeArchive ::  T.Text -> IO () writeArchive s = do
src/Home.hs view
@@ -15,16 +15,17 @@     let Just t = getStringTemplate "generic" templates     return t -renderGenericHome ::  StringTemplate T.Text -> [T.Text] -> T.Text-renderGenericHome t cs = render-                       $ setAttribute "site" defaultSite+renderGenericHome ::  Site -> StringTemplate T.Text -> [T.Text] -> T.Text+renderGenericHome s t cs = render+                       $ setAttribute "site" s                        $ setAttribute "content" (T.unlines cs) t  renderHome ::  IO T.Text renderHome = do     cs <- getAllExtracts     t <- homeTemplate-    return $ renderGenericHome t $ reverse cs+    s <- readSite+    return $ renderGenericHome s t $ reverse cs  writeHome ::  T.Text -> IO () writeHome s = do
src/Main.hs view
@@ -11,7 +11,6 @@ import Post (generatePosts) import Home (generateHome) import Archive (generateArchive)-import Site (defaultSite) import Page (generatePages) import Constant import Paths_muon@@ -31,6 +30,7 @@     copyFile (d ++ "/templates/generic.st") "templates/generic.st"     copyFile (d ++ "/pages/about") "pages/about"     copyFile (d ++ "/pages/contact") "pages/contact"+    copyFile (d ++ "/config.ini") "config.ini"     putStrLn "Initialised site directory"  copyStatic = do@@ -49,8 +49,8 @@ \  generate    generate static blog in 'site' directory\n\n\ \Report bugs to <kaashif@kaashif.co.uk>" -clearSite = mkdir sitePath -         >> removeDirectoryRecursive sitePath +clearSite = mkdir sitePath+         >> removeDirectoryRecursive sitePath          >> mkdir sitePath  rsyncCmd = "rsync -a --delete site/ root@webserver:/var/www/htdocs/"
src/Page.hs view
@@ -13,16 +13,17 @@     let Just t = getStringTemplate "generic" templates     return t -renderPage ::  StringTemplate T.Text -> T.Text -> T.Text-renderPage t c = render-               $ setAttribute "site" defaultSite+renderPage ::  Site -> StringTemplate T.Text -> T.Text -> T.Text+renderPage s t c = render+               $ setAttribute "site" s                $ setAttribute "content" c t  renderPageFile ::  String -> IO T.Text renderPageFile p = do     c <- readFile $ "pages/" ++ p     t <- pageTemplate-    return $ renderPage t (T.pack c)+    s <- readSite+    return $ renderPage s t (T.pack c)  writePage ::  String -> T.Text -> IO () writePage p c = do
src/Post.hs view
@@ -31,21 +31,22 @@     let Just t = getStringTemplate "post" templates     return t -renderPost ::  StringTemplate T.Text -> Post -> T.Text-renderPost t p = render-               $ setAttribute "site" defaultSite+renderPost ::  Site -> StringTemplate T.Text -> Post -> T.Text+renderPost s t p = render+               $ setAttribute "site" s                $ setAttribute "post" p t -renderName ::  StringTemplate T.Text -> String -> IO T.Text-renderName t n = liftM (renderPost t) (getPost (0, n))+renderName ::  Site -> StringTemplate T.Text -> String -> IO T.Text+renderName s t n = liftM (renderPost s t) (getPost (0, n))  makeExtract ::  Post -> T.Text makeExtract p = T.pack                   $ "<h2>" ++ T.unpack (title p) ++ "</h2>"                  ++ "<h3>" ++ T.unpack (date p) ++ "</h3>"                  ++  unlines (take 25 $ lines $ T.unpack $ content p)-                 ++ "<br/><br/><a href=\'" ++ T.unpack (link p) ++ "\'>Read more...</a>"-                 ++ "</code></pre></li></ul></ol><hr/>"+                 ++ "</code></pre></li></ul></ol></p>"+                 ++ "<br/><a href=\'" ++ T.unpack (link p) ++ "\'>Read more...</a>"+                 ++ "<br/><br/><hr/>"  makePost ::  (Int, [String]) -> Post makePost l = Post { title  = T.pack $ head (snd l)@@ -78,7 +79,8 @@     templates <- directoryGroup "templates" :: IO (STGroup T.Text)     let Just t = getStringTemplate "post" templates     ns <- getNames-    mapM (renderName t . snd) ns+    s <- readSite+    mapM (renderName s t . snd) ns  writePosts ::  [T.Text] -> IO () writePosts ps = mapM_ writePost (zip [1..(length ps)] ps)
src/Site.hs view
@@ -1,10 +1,12 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DeriveDataTypeable #-}-module Site (defaultSite) where+module Site (Site, readSite) where  import qualified Data.Text as T import Data.Typeable import Data.Data+import Data.ConfigFile+import Data.Either.Utils  data Site = Site { title :: T.Text                  , style :: T.Text@@ -17,3 +19,16 @@                    , author = "Your Name"                    , tagline = "Description of this blog"                    }++getSetting ::  ConfigParser -> String -> T.Text+getSetting cp s = T.pack $ forceEither $ get cp "site" s++readSite ::  IO Site+readSite = do+    r <- readfile emptyCP "config.ini"+    let cp = forceEither r+    return $ Site { title = getSetting cp "title"+                  , style = getSetting cp "style"+                  , author = getSetting cp "author"+                  , tagline = getSetting cp "tagline"+                  }
+ src/def/config.ini view
@@ -0,0 +1,5 @@+[site]+title=Default site+author=Your Name+tagline=Something descriptive+style=/style.css
src/def/style/style.css view
@@ -162,9 +162,7 @@ }  hr {-	border: 0; 	background: #aaa;-	height: 0px; 	margin: 0 0 20px; }