on master help sign in
Allow date as field for renderDateField
commit95d7eefe1f29f440d216c9a7ebd0560f2de4a9f6 authorJasper Van der Jeugt <m@jaspervdj.be> dateMon 22 Oct 2012, 14:37 (14 years ago) parent8c3b74c
2 files changed+16−8
src/Hakyll/Web/Page/Metadata.hs+13−8 tests/Hakyll/Web/Page/Metadata/Tests.hs+3
src/Hakyll/Web/Page/Metadata.hs+13−8
@@ -172,18 +172,23 @@ renderDateFieldWith locale key format defaultValue page =
172172getUTCMaybe :: TimeLocale -- ^ Output time locale
173173 -> Page a -- ^ Input page
174174 -> Maybe UTCTime -- ^ Parsed UTCTime
175−getUTCMaybe locale page = msum
176− [ fromPublished "%a, %d %b %Y %H:%M:%S UT"
177− , fromPublished "%Y-%m-%dT%H:%M:%SZ"
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" .
175+getUTCMaybe locale page = msum $
176+ [fromField "published" fmt | fmt <- formats] ++
177+ [fromField "date" fmt | fmt <- formats] ++
178+ [ getFieldMaybe "path" page >>= parseTime' "%Y-%m-%d" .
182179 intercalate "-" . take 3 . splitAll "-" . takeFileName
183180 ]
184181 where
185− fromPublished f = getFieldMaybe "published" page >>= parseTime' f
186182 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+ ]
187192
188193-- | Set the modification time as a field in the page
189194renderModificationTime :: String
tests/Hakyll/Web/Page/Metadata/Tests.hs+3
@@ -54,6 +54,9 @@ tests = concat $
5454 [ ("path", "/posts/2010-01-31-a-post.mkdwn")
5555 , ("published", "February 20, 2000 1:00 PM")
5656 ]
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") ""
5760 ]
5861
5962 , fromAssertions "copyBodyToField"