-- | Site-wide information (name, description, author, URLs) as template fields
module MathiasSM.Context.Site (siteContext) where

import Hakyll (Context, constField)
import MathiasSM.Config (SiteConfig, baseUrl, mathjaxVersion, siteAuthor, siteCopyrightYear, siteDescription, siteDomain, siteName)

-- | Sets site-wide information (site-<info>)
siteContext :: SiteConfig -> Context a
siteContext :: forall a. SiteConfig -> Context a
siteContext SiteConfig
cfg =
    [Context a] -> Context a
forall a. Monoid a => [a] -> a
mconcat
        [ String -> String -> Context a
forall a. String -> String -> Context a
constField String
"site-name" (SiteConfig -> String
siteName SiteConfig
cfg)
        , String -> String -> Context a
forall a. String -> String -> Context a
constField String
"site-description" (SiteConfig -> String
siteDescription SiteConfig
cfg)
        , String -> String -> Context a
forall a. String -> String -> Context a
constField String
"site-author" (SiteConfig -> String
siteAuthor SiteConfig
cfg)
        , String -> String -> Context a
forall a. String -> String -> Context a
constField String
"site-copyrightYear" (Int -> String
forall a. Show a => a -> String
show (Int -> String) -> Int -> String
forall a b. (a -> b) -> a -> b
$ SiteConfig -> Int
siteCopyrightYear SiteConfig
cfg)
        , String -> String -> Context a
forall a. String -> String -> Context a
constField String
"site-baseUrl" (SiteConfig -> String
baseUrl SiteConfig
cfg)
        , String -> String -> Context a
forall a. String -> String -> Context a
constField String
"site-domain" (SiteConfig -> String
siteDomain SiteConfig
cfg)
        , String -> String -> Context a
forall a. String -> String -> Context a
constField String
"mathjax-version" (SiteConfig -> String
mathjaxVersion SiteConfig
cfg)
        , String -> String -> Context a
forall a. String -> String -> Context a
constField String
"root" (SiteConfig -> String
baseUrl SiteConfig
cfg) -- read by Hakyll's own social cards
        ]