module Config.Blog (
    BlogConfig (..)
) where

import           Archives

import           Hakyll                hiding (FeedConfiguration (..),
                                        renderAtom)
import           Hakyll.Web.Feed.Extra (FeedConfiguration)
import           Lucid.Base            (Html)
import           Text.Pandoc.Options   (WriterOptions)

data BlogConfig m = BlogConfig {
    forall (m :: * -> *). BlogConfig m -> Bool
blogIsPreview                   :: Bool
  , forall (m :: * -> *). BlogConfig m -> String
blogName                        :: String
  , forall (m :: * -> *). BlogConfig m -> String
blogDescription                 :: String
  , forall (m :: * -> *). BlogConfig m -> Html ()
blogFont                        :: Html ()
  , forall (m :: * -> *). BlogConfig m -> Int
blogPageEntriesNum              :: Int
  , forall (m :: * -> *). BlogConfig m -> Int
blogPrevNextTitleMaxNum         :: Int
  , forall (m :: * -> *). BlogConfig m -> Int
blogFeedRecentNum               :: Int
  , forall (m :: * -> *). BlogConfig m -> Html ()
blogHeaderAdditional            :: Html ()
  , forall (m :: * -> *). BlogConfig m -> Html ()
blogBeforeContentBodyAdditional :: Html ()
  , forall (m :: * -> *). BlogConfig m -> Html ()
blogFooterAdditional            :: Html ()
  , forall (m :: * -> *). BlogConfig m -> m Tags
blogTagBuilder                  :: m Tags
  , forall (m :: * -> *). BlogConfig m -> String -> String
blogTagPagesPath                :: FilePath -> FilePath
  , forall (m :: * -> *). BlogConfig m -> Pattern
blogEntryPattern                :: Pattern
  , forall (m :: * -> *). BlogConfig m -> Pattern
blogEntryFilesPattern           :: Pattern
  , forall (m :: * -> *). BlogConfig m -> FeedConfiguration
blogFeedConfig                  :: FeedConfiguration
  , forall (m :: * -> *). BlogConfig m -> String
blogContentSnapshot             :: String
  , forall (m :: * -> *). BlogConfig m -> m YearlyArchives
blogYearlyArchivesBuilder       :: m YearlyArchives
  , forall (m :: * -> *). BlogConfig m -> m MonthlyArchives
blogMonthlyArchivesBuilder      :: m MonthlyArchives
  , forall (m :: * -> *). BlogConfig m -> String -> String
blogYearlyPagePath              :: FilePath -> FilePath
  , forall (m :: * -> *). BlogConfig m -> (String, String) -> String
blogMonthlyPagePath             :: (FilePath, FilePath) -> FilePath
  , forall (m :: * -> *). BlogConfig m -> WriterOptions
blogWriterOptions               :: WriterOptions
  , forall (m :: * -> *). BlogConfig m -> String
blogGoogleCx                    :: String
  }