diff options
| author | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-10-22 14:37:41 +0900 |
|---|---|---|
| committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-10-22 14:39:23 +0900 |
| commit | 95d7eefe1f29f440d216c9a7ebd0560f2de4a9f6 (patch) | |
| tree | a15df540b3905ec007b45e5b5d4c947f899d0645 | |
| parent | 8c3b74c36b1c7d47d91d097e3c5d612d440a2816 (diff) | |
| download | hakyll-95d7eefe1f29f440d216c9a7ebd0560f2de4a9f6.tar.gz | |
Allow date as field for renderDateField
| -rw-r--r-- | src/Hakyll/Web/Page/Metadata.hs | 21 | ||||
| -rw-r--r-- | tests/Hakyll/Web/Page/Metadata/Tests.hs | 3 |
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" |
