summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2012-10-22 14:37:41 +0900
committerJasper Van der Jeugt <m@jaspervdj.be>2012-10-22 14:39:23 +0900
commit95d7eefe1f29f440d216c9a7ebd0560f2de4a9f6 (patch)
treea15df540b3905ec007b45e5b5d4c947f899d0645
parent8c3b74c36b1c7d47d91d097e3c5d612d440a2816 (diff)
downloadhakyll-95d7eefe1f29f440d216c9a7ebd0560f2de4a9f6.tar.gz
Allow date as field for renderDateField
-rw-r--r--src/Hakyll/Web/Page/Metadata.hs21
-rw-r--r--tests/Hakyll/Web/Page/Metadata/Tests.hs3
2 files changed, 16 insertions, 8 deletions
diff --git a/src/Hakyll/Web/Page/Metadata.hs b/src/Hakyll/Web/Page/Metadata.hs
index 022912d..764022a 100644
--- a/src/Hakyll/Web/Page/Metadata.hs
+++ b/src/Hakyll/Web/Page/Metadata.hs
@@ -172,18 +172,23 @@ renderDateFieldWith locale key format defaultValue page =
getUTCMaybe :: TimeLocale -- ^ Output time locale
-> Page a -- ^ Input page
-> Maybe UTCTime -- ^ Parsed UTCTime
-getUTCMaybe locale page = msum
- [ fromPublished "%a, %d %b %Y %H:%M:%S UT"
- , fromPublished "%Y-%m-%dT%H:%M:%SZ"
- , fromPublished "%Y-%m-%d %H:%M:%S"
- , fromPublished "%B %e, %Y %l:%M %p"
- , fromPublished "%B %e, %Y"
- , getFieldMaybe "path" page >>= parseTime' "%Y-%m-%d" .
+getUTCMaybe locale page = msum $
+ [fromField "published" fmt | fmt <- formats] ++
+ [fromField "date" fmt | fmt <- formats] ++
+ [ getFieldMaybe "path" page >>= parseTime' "%Y-%m-%d" .
intercalate "-" . take 3 . splitAll "-" . takeFileName
]
where
- fromPublished f = getFieldMaybe "published" page >>= parseTime' f
parseTime' f str = parseTime locale f str
+ fromField k fmt = getFieldMaybe k page >>= parseTime' fmt
+
+ formats =
+ [ "%a, %d %b %Y %H:%M:%S UT"
+ , "%Y-%m-%dT%H:%M:%SZ"
+ , "%Y-%m-%d %H:%M:%S"
+ , "%B %e, %Y %l:%M %p"
+ , "%B %e, %Y"
+ ]
-- | Set the modification time as a field in the page
renderModificationTime :: String
diff --git a/tests/Hakyll/Web/Page/Metadata/Tests.hs b/tests/Hakyll/Web/Page/Metadata/Tests.hs
index e3ceed9..badb9fb 100644
--- a/tests/Hakyll/Web/Page/Metadata/Tests.hs
+++ b/tests/Hakyll/Web/Page/Metadata/Tests.hs
@@ -54,6 +54,9 @@ tests = concat $
[ ("path", "/posts/2010-01-31-a-post.mkdwn")
, ("published", "February 20, 2000 1:00 PM")
]
+ , (@=?) "October 22, 2012" $ getField "date" $ renderDateField
+ "date" "%B %e, %Y" "Date unknown" $ Page
+ (M.singleton "date" "2012-10-22 14:35:24") ""
]
, fromAssertions "copyBodyToField"