1
0

Implement language as Maybe parameter for contexts.

This commit is contained in:
Kevin Matsubara 2025-12-26 18:37:31 +01:00
parent 332541cdfa
commit b43909cbcc

View File

@ -30,34 +30,60 @@ main = hakyll $ do
match "posts/*" $ do match "posts/*" $ do
route $ setExtension "html" route $ setExtension "html"
compile $ pandocCompiler compile $ do
>>= loadAndApplyTemplate "templates/post.html" postCtx identifier <- getUnderlying
>>= loadAndApplyTemplate "templates/default.html" postCtx metadata <- getMetadata identifier
>>= relativizeUrls let language = lookupString "language" metadata
pandocCompiler
>>= loadAndApplyTemplate "templates/post.html" (postCtx language)
>>= loadAndApplyTemplate "templates/default.html" (postCtx language)
>>= relativizeUrls
match "events/*" $ do match "events/*" $ do
route $ setExtension "html" route $ setExtension "html"
compile $ pandocCompiler compile $ do
>>= loadAndApplyTemplate "templates/event.html" postCtx identifier <- getUnderlying
>>= loadAndApplyTemplate "templates/default.html" postCtx metadata <- getMetadata identifier
>>= relativizeUrls let language = lookupString "language" metadata
pandocCompiler
>>= loadAndApplyTemplate "templates/event.html" (postCtx language)
>>= loadAndApplyTemplate "templates/default.html" (postCtx language)
>>= relativizeUrls
match "pages/en/plamo/**" $ do match "pages/en/plamo/**" $ do
route $ setExtension "html" route $ setExtension "html"
compile $ pandocCompiler compile $ do
>>= loadAndApplyTemplate "templates/post.html" postCtx identifier <- getUnderlying
>>= loadAndApplyTemplate "templates/default.html" postCtx metadata <- getMetadata identifier
>>= relativizeUrls let language = lookupString "language" metadata
let dateValue = lookupString "date" metadata
modelKitTemplate =
if dateValue == Just "1990-01-01"
then "templates/model-kit-not-ready.html"
else "templates/model-kit.html"
pandocCompiler
>>= loadAndApplyTemplate modelKitTemplate (postCtx language)
>>= loadAndApplyTemplate "templates/default.html" (postCtx language)
>>= relativizeUrls
create ["archive.html"] $ do create ["archive.html"] $ do
route idRoute route idRoute
compile $ do compile $ do
identifier <- getUnderlying
metadata <- getMetadata identifier
let language = lookupString "language" metadata
let lang = fromMaybe "en" language
posts <- recentFirst =<< loadAll "posts/*" posts <- recentFirst =<< loadAll "posts/*"
let archiveCtx = let archiveCtx =
listField "posts" postCtx (return posts) `mappend` listField "posts" (postCtx language) (return posts) <>
constField "title" "Archives" `mappend` constField "title" "Archives" <>
constField "language" "en" `mappend` constField "language" lang <>
langDict "en" <> langDict lang <>
defaultContext defaultContext
makeItem "" makeItem ""
@ -73,12 +99,17 @@ main = hakyll $ do
route idRoute route idRoute
compile $ do compile $ do
ident <- getUnderlying ident <- getUnderlying
language <- getMetadataField' ident "language"
kits <- recentFirst =<< loadAll "pages/en/plamo/**" kits <- recentFirst =<< loadAll "pages/en/plamo/**"
-- language <- getMetadataField' ident "language"
identifier <- getUnderlying
metadata <- getMetadata identifier
let language = lookupString "language" metadata
let lang = fromMaybe "en" language
let plamoCtx = let plamoCtx =
listField "kits" postCtx (return kits) <> listField "kits" (postCtx language) (return kits) <>
langDict language <> langDict lang <>
defaultContext defaultContext
getResourceBody getResourceBody
@ -96,8 +127,13 @@ main = hakyll $ do
compile $ do compile $ do
posts <- recentFirst =<< loadAll "posts/*" posts <- recentFirst =<< loadAll "posts/*"
now <- unsafeCompiler getCurrentTime now <- unsafeCompiler getCurrentTime
ident <- getUnderlying ident <- getUnderlying
language <- getMetadataField' ident "language" --language <- getMetadataField' ident "language"
identifier <- getUnderlying
metadata <- getMetadata identifier
let language = lookupString "language" metadata
let lang = fromMaybe "en" language
-- Seven days from today. -- Seven days from today.
let cutoff = addUTCTime (7 * 24 * 60 * 60) now let cutoff = addUTCTime (7 * 24 * 60 * 60) now
@ -109,9 +145,9 @@ main = hakyll $ do
let indexCtx = let indexCtx =
-- (<> is the modern version of `mappend`.) -- (<> is the modern version of `mappend`.)
listField "posts" postCtx (return posts) <> listField "posts" (postCtx language) (return posts) <>
listField "events" postCtx (return events) <> listField "events" (postCtx language) (return events) <>
langDict language <> langDict lang <>
defaultContext defaultContext
getResourceBody getResourceBody
@ -128,12 +164,14 @@ staticPageContext =
langDict "en" <> langDict "en" <>
defaultContext defaultContext
postCtx :: Context String postCtx :: Maybe String -> Context String
postCtx = postCtx language =
dateField "date" "%e %B %Y" `mappend` let lang = fromMaybe "en" language
constField "language" "en" `mappend` in
langDict "en" <> dateField "date" "%e %B %Y" <>
defaultContext constField "language" lang <>
langDict lang <>
defaultContext
isUpcoming :: UTCTime -> Item a -> Compiler Bool isUpcoming :: UTCTime -> Item a -> Compiler Bool
isUpcoming cutoff item = do isUpcoming cutoff item = do
@ -153,6 +191,8 @@ langDict "nl" =
constField "title-plamo" "Plamo" <> constField "title-plamo" "Plamo" <>
constField "title-radio" "Radio" <> constField "title-radio" "Radio" <>
constField "title-software" "Software" <> constField "title-software" "Software" <>
constField "text-plamo-not-ready" "Deze model-kit heeft nog geen gepubliceerd werk." <>
constField "text-plamo-back" "Terug naar plamo kits" <>
mempty mempty
langDict "jp" = langDict "jp" =
@ -162,6 +202,8 @@ langDict "jp" =
constField "title-plamo" "プラモ" <> constField "title-plamo" "プラモ" <>
constField "title-radio" "ラジオ" <> constField "title-radio" "ラジオ" <>
constField "title-software" "ソフトウェア" <> constField "title-software" "ソフトウェア" <>
constField "text-plamo-not-ready" "この模型キットには、まだ制作例が公開されていません。" <>
constField "text-plamo-back" "プラモデルキットに戻る" <>
mempty mempty
langDict "en" = langDict "en" =
@ -171,6 +213,8 @@ langDict "en" =
constField "title-plamo" "Plamo" <> constField "title-plamo" "Plamo" <>
constField "title-radio" "Radio" <> constField "title-radio" "Radio" <>
constField "title-software" "Software" <> constField "title-software" "Software" <>
constField "text-plamo-not-ready" "This model kit has no work published for it yet." <>
constField "text-plamo-back" "Back to plamo kits" <>
mempty mempty
langDict _ = mempty langDict _ = mempty