refactor snippets
authorrekado <rekado@elephly.net>
Sat, 17 Aug 2013 07:50:08 +0000 (15:50 +0800)
committerrekado <rekado@elephly.net>
Sat, 17 Aug 2013 07:50:08 +0000 (15:50 +0800)
site.hs

diff --git a/site.hs b/site.hs
index f89c18cd3899fd620aa3dc64b2e17b1293076329..35cf014c5c4ad91656a5acdc8502ee3daf0d4fb4 100644 (file)
--- a/site.hs
+++ b/site.hs
@@ -93,30 +93,18 @@ postCtx =
     licenseSnippet `mappend`
     defaultContext
 
--- If a post declares a photo in the metadata header,
--- build an image tag, otherwise ignore.
-photoSnippet :: Context String
-photoSnippet = field "photo-snippet" $ \item -> do
+-- If a post declares a certain key in the metadata header,
+-- load the given template, otherwise ignore.
+snippet :: String -> String -> Identifier -> Context String
+snippet name key templatePath = field name $ \item -> do
     metadata <- getMetadata (itemIdentifier item)
-    case M.lookup "photo" metadata of
-      Just file -> itemBody <$> loadAndApplyTemplate "templates/photo.html" postCtx item
+    case M.lookup key metadata of
+      Just file -> itemBody <$> loadAndApplyTemplate templatePath postCtx item
       _         -> return ""
 
--- If a post declares a flattr id in the metadata header,
--- load the flattr snippet, otherwise ignore.
-flattrSnippet :: Context String
-flattrSnippet = field "flattr-snippet" $ \item -> do
-    metadata <- getMetadata (itemIdentifier item)
-    case M.lookup "flattr" metadata of
-      Just _ -> itemBody <$> loadAndApplyTemplate "templates/flattr.html" postCtx item
-      _      -> return ""
-
-licenseSnippet :: Context String
-licenseSnippet = field "license-snippet" $ \item -> do
-    metadata <- getMetadata (itemIdentifier item)
-    case M.lookup "license" metadata of
-      Just _ -> itemBody <$> loadAndApplyTemplate "templates/license.html" postCtx item
-      _      -> return ""
+photoSnippet   = snippet "photo-snippet" "photo" "templates/photo.html"
+flattrSnippet  = snippet "flattr-snippet" "flattr" "templates/flattr.html"
+licenseSnippet = snippet "license-snippet" "license" "templates/license.html"
 
 
 --------------------------------------------------------------------------------