hablo/src/ArticlesList.hs

39 lines
1.1 KiB
Haskell
Raw Normal View History

{-# LANGUAGE NamedFieldPuns #-}
2019-02-17 19:52:28 +01:00
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleContexts #-}
module ArticlesList (
ArticlesList(..)
, otherUrl
, pageTitle
) where
import Article (Article)
import Blog (Blog(..), get)
import Blog.Wording (render)
2019-02-17 19:52:28 +01:00
import Control.Monad.Reader (MonadReader)
import Data.Text (Text, pack)
import Files (absoluteLink)
import System.FilePath.Posix ((</>))
data ArticlesList = ArticlesList {
tagged :: Maybe String
, full :: Bool
, featured :: [Article]
}
2019-02-06 12:57:57 +01:00
otherUrl :: ArticlesList -> String
otherUrl (ArticlesList {full, tagged}) = absoluteLink $
(if full then id else (</> "all.html")) $ maybe "" id tagged
2019-02-17 19:52:28 +01:00
pageTitle :: (MonadReader Blog m) => ArticlesList -> m Text
pageTitle (ArticlesList {full, tagged}) = title (full, tagged) <$> Blog.get wording
2019-02-17 19:52:28 +01:00
where
title (True, Nothing) = render "allPage" []
title (True, Just tag) = render "allTaggedPage" [("tag", pack tag)]
title (False, Nothing) = render "latestPage" []
title (False, Just tag) = render "latestTaggedPage" [("tag", pack tag)]