From 474276e6a1700914b747f998aa790fa34a9dd7b2 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Tue, 7 Mar 2023 16:14:42 +0100 Subject: [PATCH] support for no background at all --- make-pages/GalleryPage.hs | 2 +- make-pages/Info.hs | 17 ++++++++++++++--- make-pages/SinglePage.hs | 17 ++++++++++++++--- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/make-pages/GalleryPage.hs b/make-pages/GalleryPage.hs index 966d240..93a1708 100644 --- a/make-pages/GalleryPage.hs +++ b/make-pages/GalleryPage.hs @@ -176,4 +176,4 @@ makeItem nsfw file info@(Info {bg}) = [b|@0 date' = formatShort date year' = #year date updated' = if #updated info nsfw then [b|true|] else [b|false|] - bgStyle = ifJust bg \col -> [b| style="background: $col"|] + bgStyle = case bg of Other col -> [b| style="background: $col"|]; _ -> "" diff --git a/make-pages/Info.hs b/make-pages/Info.hs index 6e92cbb..093dc3c 100644 --- a/make-pages/Info.hs +++ b/make-pages/Info.hs @@ -1,9 +1,11 @@ +{-# OPTIONS_GHC -fdefer-typed-holes #-} + {-# OPTIONS_GHC -Wno-orphans #-} module Info (Info (..), tagsFor, descFor, imagesFor, linksFor, updatesFor, compareFor, sortFor, Artist (..), Images' (..), Images, Image (..), Desc (..), DescField (..), - Link (..), Update (..), + Link (..), Update (..), Bg (..), GalleryInfo (..), GalleryFilters (..), ArtistFilter (..), NsfwFilter (..), IndexInfo (..), readArtistFilter, matchArtist, readNsfwFilter, matchNsfw, matchFilters, @@ -57,7 +59,7 @@ data Info = nsfwTags :: ![Text], desc :: !Desc, nsfwDesc :: !Desc, - bg :: !(Maybe Text), + bg :: !Bg, images :: !Images, thumb' :: !(Maybe FilePath), links :: ![Link], @@ -65,6 +67,9 @@ data Info = } deriving (Eq, Show) +data Bg = Default | NoBorder | Other !Text + deriving (Eq, Show) + data Desc = NoDesc | TextDesc !Text @@ -279,12 +284,18 @@ instance FromYAML Info where <*> m .:? "nsfw-tags" .!= [] <*> m .:? "desc" .!= NoDesc <*> m .:? "nsfw-desc" .!= NoDesc - <*> m .:? "bg" + <*> m .:? "bg" .!= Default <*> m .: "images" <*> m .:? "thumb" <*> m .:? "links" .!= [] <*> m .:? "extras" .!= [] +instance FromYAML Bg where + parseYAML y = + YAML.withNull "default value" (pure Default) y + <|> YAML.withStr "css or \"noborder\"" + (\str -> pure if str == "noborder" then NoBorder else Other str) y + instance FromYAML Artist where parseYAML y = justName y <|> withUrl y where justName = YAML.withStr "name" \name -> pure $ Artist {name, url = Nothing} diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index 8856e85..75dad28 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -84,9 +84,20 @@ make' root siteName prefix nsfw _dataDir dir | otherwise = mempty let warningT = makeWarning [b|.|] - let bgStyle = ifJust bg \col -> [b|@0 - - |] + let bgStyle = case bg of + Default -> "" + NoBorder -> [b|@0 + + |] + Other col -> [b|@0 + + |] let url = [b|$root/$prefix/$dir|] let desc = case artist of