on master help sign in
Add trySetField, fix bug in renderField
commitc14d8871b8b2df51735948b50f53677a06924a5b authorJasper Van der Jeugt <jaspervdj@gmail.com> dateTue 1 Mar 2011, 22:22 (16 years ago) parent1a7d746
3 files changed+22−13
src/Hakyll/Web/Feed.hs+7−7 src/Hakyll/Web/Page.hs+4−4 src/Hakyll/Web/Page/Metadata.hs+11−2
src/Hakyll/Web/Feed.hs+7−7
@@ -60,17 +60,17 @@ createFeed :: Template -- ^ Feed template
6060 -> String -- ^ Resulting feed
6161createFeed feedTemplate itemTemplate url configuration items =
6262 pageBody $ applyTemplate feedTemplate
63− $ setField "timestamp" timestamp
64− $ setField "title" (feedTitle configuration)
65− $ setField "description" (feedDescription configuration)
66− $ setField "authorName" (feedDescription configuration)
67− $ setField "root" (feedRoot configuration)
68− $ setField "url" url
63+ $ trySetField "timestamp" timestamp
64+ $ trySetField "title" (feedTitle configuration)
65+ $ trySetField "description" (feedDescription configuration)
66+ $ trySetField "authorName" (feedDescription configuration)
67+ $ trySetField "root" (feedRoot configuration)
68+ $ trySetField "url" url
6969 $ fromBody body
7070 where
7171 -- Preprocess items
7272 items' = flip map items $ applyTemplate itemTemplate
73− . setField "root" (feedRoot configuration)
73+ . trySetField "root" (feedRoot configuration)
7474
7575 -- Body: concatenated items
7676 body = concat $ map pageBody items'
src/Hakyll/Web/Page.hs+4−4
@@ -107,12 +107,12 @@ addDefaultFields = (getRoute &&& id >>^ uncurry addRoute)
107107 where
108108 -- Add root and url, based on route
109109 addRoute Nothing = id
110− addRoute (Just r) = setField "url" (toUrl r)
110+ addRoute (Just r) = trySetField "url" (toUrl r)
111111
112112 -- Add title and category, based on identifier
113− addIdentifier i = setField "title" (takeBaseName p)
114− . setField "category" (takeBaseName $ takeDirectory p)
115− . setField "path" p
113+ addIdentifier i = trySetField "title" (takeBaseName p)
114+ . trySetField "category" (takeBaseName $ takeDirectory p)
115+ . trySetField "path" p
116116 where
117117 p = toFilePath i
118118
src/Hakyll/Web/Page/Metadata.hs+11−2
@@ -4,6 +4,7 @@ module Hakyll.Web.Page.Metadata
44 ( getField
55 , getFieldMaybe
66 , setField
7+ , trySetField
78 , setFieldA
89 , renderField
910 , changeField
@@ -41,13 +42,21 @@ getFieldMaybe :: String -- ^ Key
4142 -> Maybe String -- ^ Value, if found
4243getFieldMaybe key = M.lookup key . pageMetadata
4344
44−-- | Add a metadata field. If the field already exists, it is not overwritten.
45+-- | Version of 'trySetField' which overrides any previous value
4546--
4647setField :: String -- ^ Key
4748 -> String -- ^ Value
4849 -> Page a -- ^ Page to add it to
4950 -> Page a -- ^ Resulting page
50−setField k v (Page m b) = Page (M.insertWith (flip const) k v m) b
51+setField k v (Page m b) = Page (M.insert k v m) b
52+
53+-- | Add a metadata field. If the field already exists, it is not overwritten.
54+--
55+trySetField :: String -- ^ Key
56+ -> String -- ^ Value
57+ -> Page a -- ^ Page to add it to
58+ -> Page a -- ^ Resulting page
59+trySetField k v (Page m b) = Page (M.insertWith (flip const) k v m) b
5160
5261-- | Arrow-based variant of 'setField'. Because of it's type, this function is
5362-- very usable together with the different 'require' functions.