on master help sign in
Allow date as field for renderDateField
95d7eefJasper Van der Jeugt
src/Hakyll/Web/Page/Metadata.hs+13−8
@@ -172,18 +172,23 @@ renderDateFieldWith locale key format defaultValue page =
172getUTCMaybe :: TimeLocale -- ^ Output time locale
172getUTCMaybe :: TimeLocale -- ^ Output time locale
173 -> Page a -- ^ Input page
173 -> Page a -- ^ Input page
174 -> Maybe UTCTime -- ^ Parsed UTCTime
174 -> Maybe UTCTime -- ^ Parsed UTCTime
175−getUTCMaybe locale page = msum
175+getUTCMaybe locale page = msum $
176− [ fromPublished "%a, %d %b %Y %H:%M:%S UT"
176+ [fromField "published" fmt | fmt <- formats] ++
177− , fromPublished "%Y-%m-%dT%H:%M:%SZ"
177+ [fromField "date" fmt | fmt <- formats] ++
178− , fromPublished "%Y-%m-%d %H:%M:%S"
179− , fromPublished "%B %e, %Y %l:%M %p"
180− , fromPublished "%B %e, %Y"
181− , getFieldMaybe "path" page >>= parseTime' "%Y-%m-%d" .
178+ [ getFieldMaybe "path" page >>= parseTime' "%Y-%m-%d" .
182 intercalate "-" . take 3 . splitAll "-" . takeFileName
179 intercalate "-" . take 3 . splitAll "-" . takeFileName
183 ]
180 ]
184 where
181 where
185− fromPublished f = getFieldMaybe "published" page >>= parseTime' f
186 parseTime' f str = parseTime locale f str
182 parseTime' f str = parseTime locale f str
183+ fromField k fmt = getFieldMaybe k page >>= parseTime' fmt
184+
185+ formats =
186+ [ "%a, %d %b %Y %H:%M:%S UT"
187+ , "%Y-%m-%dT%H:%M:%SZ"
188+ , "%Y-%m-%d %H:%M:%S"
189+ , "%B %e, %Y %l:%M %p"
190+ , "%B %e, %Y"
191+ ]
187
192
188-- | Set the modification time as a field in the page
193-- | Set the modification time as a field in the page
189renderModificationTime :: String
194renderModificationTime :: String
tests/Hakyll/Web/Page/Metadata/Tests.hs+3
@@ -54,6 +54,9 @@ tests = concat $
54 [ ("path", "/posts/2010-01-31-a-post.mkdwn")
54 [ ("path", "/posts/2010-01-31-a-post.mkdwn")
55 , ("published", "February 20, 2000 1:00 PM")
55 , ("published", "February 20, 2000 1:00 PM")
56 ]
56 ]
57+ , (@=?) "October 22, 2012" $ getField "date" $ renderDateField
58+ "date" "%B %e, %Y" "Date unknown" $ Page
59+ (M.singleton "date" "2012-10-22 14:35:24") ""
57 ]
60 ]
58
61
59 , fromAssertions "copyBodyToField"
62 , fromAssertions "copyBodyToField"