gallery/make-pages/IndexPage.hs

47 lines
957 B
Haskell
Raw Normal View History

2020-07-16 10:29:32 -04:00
module IndexPage (make) where
import qualified Data.Text.Lazy as Lazy
import Data.Text.Lazy.Builder (Builder, toLazyText)
import BuilderQQ
import Info
2020-07-18 05:45:32 -04:00
make :: IndexInfo -> Lazy.Text
2020-07-19 06:10:27 -04:00
make info = toLazyText $ make' info
2020-07-16 10:29:32 -04:00
2020-07-18 05:45:32 -04:00
make' :: IndexInfo -> Builder
2020-07-19 06:10:27 -04:00
make' (IndexInfo {title, galleries, footer}) = [b|@0
2020-07-16 10:29:32 -04:00
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
2020-07-17 06:29:13 -04:00
<link rel=stylesheet href=/style/index.css>
2020-07-16 10:29:32 -04:00
2020-07-19 06:10:27 -04:00
<title>$*title</title>
2020-07-16 10:29:32 -04:00
<header>
2020-07-19 06:10:27 -04:00
<h1>$*title</h1>
2020-07-16 10:29:32 -04:00
</header>
<main>
<ul class=gallery-list>
$4.items
</ul>
</main>
2020-07-18 05:45:32 -04:00
<footer>
$4*footer
</footer>
2020-07-16 10:29:32 -04:00
|]
where
2020-07-18 05:45:32 -04:00
items = map makeItem galleries
2020-07-16 10:29:32 -04:00
makeItem :: GalleryInfo -> Builder
2020-07-17 06:29:13 -04:00
makeItem (GalleryInfo {title, prefix, filters}) = [b|@4
<li$nsfw><a href=$@prefix>$*title</a>
2020-07-16 10:29:32 -04:00
|]
2020-07-17 06:29:13 -04:00
where
nsfw = if hasNsfw filters then " class=nsfw" else ""
hasNsfw :: GalleryFilters -> Bool
hasNsfw (GalleryFilters {nsfw}) = nsfw /= Just False