From 035aa78920bd179a2a154cd712f53858e38127a0 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Wed, 21 Aug 2024 07:40:28 +0200 Subject: [PATCH 01/14] require $& for whitespace before or after a builder --- make-pages/BuilderQQ.hs | 8 +++++++- make-pages/GalleryPage.hs | 8 ++++---- make-pages/IndexPage.hs | 4 ++-- make-pages/SinglePage.hs | 6 +++--- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/make-pages/BuilderQQ.hs b/make-pages/BuilderQQ.hs index c7cee73..95bba6b 100644 --- a/make-pages/BuilderQQ.hs +++ b/make-pages/BuilderQQ.hs @@ -18,9 +18,15 @@ import Data.List.NonEmpty (NonEmpty, toList) data Chunk = Lit String | Var String + +-- | +-- * use @$var@ to insert a variable (instance of 'CanBuild') +-- * use @$&@ to insert nothing like @\&@ in a string (e.g. to add whitespace +-- at the start or end, or to have a variable followed by a letter +-- * use @$$@ for a literal @$@ parseB :: String -> ExpQ parseB = toExpQ . reverse . go "" [] . trim where - trim = dropWhileEnd isSpace . dropWhile (== '\n') + trim = dropWhileEnd isSpace . dropWhile isSpace go acc cs [] = addLit acc cs go acc cs ('$':'&':rest) = go acc cs rest -- $&: expands to nothing go acc cs ('$':'$':rest) = go ('$' : acc) cs rest -- $$: expands to one $ diff --git a/make-pages/GalleryPage.hs b/make-pages/GalleryPage.hs index ae2a1bd..3e9c7fb 100644 --- a/make-pages/GalleryPage.hs +++ b/make-pages/GalleryPage.hs @@ -129,8 +129,8 @@ makeFilter prefix initial tag count = [b| where id' = [b|$prefix$&_$tag'|] tag' = escId tag - checked = if HashSet.member tag initial then [b| checked|] else "" - hidden = if count <= 1 then [b| hidden|] else "" + checked = if HashSet.member tag initial then [b|$& checked|] else "" + hidden = if count <= 1 then [b|$& hidden|] else "" makeYearItems :: Bool -- ^ nsfw -> Int -- ^ year @@ -159,12 +159,12 @@ makeItem nsfw file info@(Info {bg}) = [b| title = fromMaybe info.title $ info.galleryTitle dir = takeDirectory file thumbnail = getThumb dir info - nsfw' = if nsfw && anyNsfw info then [b| nsfw|] else "" + nsfw' = if nsfw && anyNsfw info then [b|$& nsfw|] else "" tags' = fold $ intersperse ";" $ map fromText $ tagsFor nsfw info date = latestDateFor nsfw info date' = formatTooltip date year' = date.year updated' = if hasUpdatesFor nsfw info then [b|true|] else [b|false|] - bgStyle = case bg of Other col -> [b| style="background: $col"|]; _ -> "" + bgStyle = case bg of Other col -> [b|$& style="background: $col"|]; _ -> "" tooltip = [b|$title ($upd$date')|] where upd = if hasUpdatesFor nsfw info then "updated " else "" :: Builder diff --git a/make-pages/IndexPage.hs b/make-pages/IndexPage.hs index 3efce99..1b1600d 100644 --- a/make-pages/IndexPage.hs +++ b/make-pages/IndexPage.hs @@ -74,13 +74,13 @@ makeItem :: GalleryInfo -> Builder makeItem (GalleryInfo {title, desc, prefix, filters}) = [b| $title |] - where nsfw = if hasNsfw filters then [b| class=nsfw|] else "" + where nsfw = if hasNsfw filters then [b|$& class=nsfw|] else "" makeLink :: Link -> Builder makeLink (Link {title, url, nsfw}) = [b| $title |] - where nsfw' = if nsfw then [b| class=nsfw|] else "" + where nsfw' = if nsfw then [b|$& class=nsfw|] else "" hasNsfw :: GalleryFilters -> Bool hasNsfw (GalleryFilters {nsfw}) = nsfw /= NoNsfw diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index 8124b50..28bfc10 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -302,11 +302,11 @@ altButton img i = [b| |] where Image {label, nsfw, warning, download} = img - nsfwClass = if nsfw then [b| class=nsfw|] else "" - nsfwLabelClass = if nsfw then [b| class=nsfw-label|] else "" + nsfwClass = if nsfw then [b|$& class=nsfw|] else "" + nsfwLabelClass = if nsfw then [b|$& class=nsfw-label|] else "" path' = pageFile img link = fromMaybe (bigFile img) download - warning' = ifJust warning \(escAttr -> w) -> [b| data-warning="$w"|] + warning' = ifJust warning \(escAttr -> w) -> [b|$& data-warning="$w"|] makeTags :: FilePath -> [Strict.Text] -> Builder makeTags undir tags = From 07011227bcc48125e8360079b0cb5b82a4144992 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Wed, 21 Aug 2024 08:22:28 +0200 Subject: [PATCH 02/14] use headings & figures for gallery grid instead of a ul --- make-pages/GalleryPage.hs | 14 +++++++------- style/shiny/gallery.css | 9 +++------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/make-pages/GalleryPage.hs b/make-pages/GalleryPage.hs index 3e9c7fb..d7a87cc 100644 --- a/make-pages/GalleryPage.hs +++ b/make-pages/GalleryPage.hs @@ -80,9 +80,7 @@ make' root (GalleryInfo {title, desc, prefix, filters, hidden}) infos = [b|
-
    - $items -
+ $items
|] @@ -137,8 +135,9 @@ makeYearItems :: Bool -- ^ nsfw -> [(FilePath, Info)] -> Builder makeYearItems nsfw year infos = [b| -
  • - $year' +

    + $year' +

    $items |] where @@ -147,16 +146,17 @@ makeYearItems nsfw year infos = [b| makeItem :: Bool -> FilePath -> Info -> Builder makeItem nsfw file info@(Info {bg}) = [b| -
  • + |] where - title = fromMaybe info.title $ info.galleryTitle + title = fromMaybe info.title info.galleryTitle dir = takeDirectory file thumbnail = getThumb dir info nsfw' = if nsfw && anyNsfw info then [b|$& nsfw|] else "" diff --git a/style/shiny/gallery.css b/style/shiny/gallery.css index 131e123..4dd83fe 100644 --- a/style/shiny/gallery.css +++ b/style/shiny/gallery.css @@ -154,7 +154,7 @@ } -.grid { +main { padding: 0; display: grid; grid: auto-flow / repeat(auto-fit, var(--image-size)); @@ -169,6 +169,7 @@ width: var(--image-size); height: var(--image-size); overflow: hidden; + margin: 0; position: relative; } @@ -189,13 +190,9 @@ /* uncomment to reenable line breaks before year markers */ /* grid-area: auto / 1; */ padding: var(--border-thickness); -} - -.year-text { - --gap: 0.2em; display: grid; grid-template-columns: repeat(2, calc(50% - 3 * var(--gap))); - grid-gap: var(--gap); + grid-gap: 0; align-items: center; justify-content: center; height: 100%; From 9d0b1a5eb3b7ac79127224c14f88cf25edb59a43 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Wed, 21 Aug 2024 08:30:51 +0200 Subject: [PATCH 03/14] RSS: dc:creator, more cdata wrappers, different desc formatting --- make-pages/RSS.hs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/make-pages/RSS.hs b/make-pages/RSS.hs index 3739cda..d3b5160 100644 --- a/make-pages/RSS.hs +++ b/make-pages/RSS.hs @@ -26,11 +26,12 @@ make' :: Strict.Text -> Strict.Text -> GalleryInfo -> Maybe FilePath -> [(FilePath, Info)] -> Builder make' root name ginfo@(GalleryInfo {title, desc, prefix}) output infos = [b| - + - $name—$title + <![CDATA[$name—$title]]> $link - $desc + $selflink $items @@ -50,11 +51,12 @@ make' root name ginfo@(GalleryInfo {title, desc, prefix}) output infos = [b| makeItem :: Strict.Text -> FilePath -> Bool -> FilePath -> Info -> Builder makeItem root prefix nsfw path info@(Info {title}) = [b| - $title$suffix + <![CDATA[$title$suffix]]> $link $link - $body + $date + $body |] where @@ -77,6 +79,8 @@ makeItem root prefix nsfw path info@(Info {title}) = [b| dir = takeDirectory path link = [b|$root/$prefix/$dir|] + creator = maybe "niss" (.name) info.artist + date = formatRSS $ latestDateFor nsfw info artist = ifJust info.artist \case Artist name Nothing -> [b|

    by $name|] @@ -92,5 +96,9 @@ makeItem root prefix nsfw path info@(Info {title}) = [b| makeDesc :: Desc -> Builder makeDesc NoDesc = "" makeDesc (TextDesc txt) = [b|$txt|] -makeDesc (LongDesc fs) = [b|

    $fields
    |] - where fields = map (\(DescField {name, text}) -> [b|
    $name
    $text|]) fs +makeDesc (LongDesc fs) = [b|
      $fields
    |] where + fields = map mkField fs + mkField (DescField {name, text}) = [b| +
  • $name: + $text + |] From 18629cb2207b0f368d508903849c021bec350fea Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:24:17 +0200 Subject: [PATCH 04/14] add image descriptions/alt text --- make-pages/GalleryPage.hs | 2 +- make-pages/Info.hs | 19 +++++++++---------- make-pages/RSS.hs | 12 +++++++++--- make-pages/SinglePage.hs | 9 ++++++--- script/single.ts | 5 ++++- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/make-pages/GalleryPage.hs b/make-pages/GalleryPage.hs index d7a87cc..7870691 100644 --- a/make-pages/GalleryPage.hs +++ b/make-pages/GalleryPage.hs @@ -151,7 +151,7 @@ makeItem nsfw file info@(Info {bg}) = [b| + alt="$title" title="$tooltip"> |] diff --git a/make-pages/Info.hs b/make-pages/Info.hs index e09e294..4d06fb9 100644 --- a/make-pages/Info.hs +++ b/make-pages/Info.hs @@ -105,6 +105,7 @@ data Image = label :: !Text, path :: !FilePath, download :: !(Maybe FilePath), + desc :: !Text, nsfw :: !Bool, warning :: !(Maybe Text), resize :: !Bool @@ -369,17 +370,18 @@ unlabelledImage' label' y = asStr y <|> asObj y where asStr = YAML.withStr "path" \(Text.unpack -> path) -> let label = fromMaybe (pathToLabel path) label' in - pure $ Image {label, path, download = Nothing, + pure $ Image {label, path, download = Nothing, desc = "", nsfw = False, warning = Nothing, resize = True} asObj = YAML.withMap "image info" \m -> do - checkKeys m ["path", "download", "nsfw", "warning", "resize"] + checkKeys m ["path", "download", "desc", "nsfw", "warning", "resize"] path <- m .: "path" download <- m .:? "download" + desc <- m .:? "desc" .!= "" nsfw <- m .:? "nsfw" .!= False warning <- m .:? "warning" resize <- m .:? "resize" .!= True let label = fromMaybe (pathToLabel path) label' - pure $ Image {label, path, download, nsfw, warning, resize} + pure $ Image {label, path, download, nsfw, warning, desc, resize} pathToLabel = Text.pack . gapToSpace . takeBaseName gapToSpace = map \case '-' -> ' '; '_' -> ' '; c -> c @@ -407,14 +409,13 @@ instance FromYAML Link where updateList :: Maybe (YAML.Node YAML.Pos) -> YAML.Parser [(Date, NonEmpty Update)] updateList = - maybe (pure []) $ YAML.withMap "updates" $ - nonEmptys <=< traverse bodies . Map.toList + maybe (pure []) $ YAML.withMap "updates" $ traverse bodies . Map.toList where bodies (date', rest) = (,) <$> parseYAML date' <*> body rest - body b = - return <$> body1 b - <|> YAML.withSeq "update list" (traverse body1) b + body b = return <$> body1 b <|> YAML.withSeq "update list" (bodyN b) b body1 b = asDesc b <|> asObj b + bodyN y = + maybe (YAML.typeMismatch "non-empty list" y) (traverse body1) . nonEmpty asDesc = YAML.withStr "desc" \desc -> pure $ Update {desc, nsfw = False, ignoreSort = False} asObj = YAML.withMap "update info" \m -> do @@ -423,8 +424,6 @@ updateList = nsfw <- m .:? "nsfw" .!= False ignoreSort <- m .:? "ignore-sort" .!= False pure $ Update {desc, nsfw, ignoreSort} - nonEmptys = traverse $ traverse $ - maybe (fail "expected non-empty list") pure . nonEmpty data GalleryInfo = diff --git a/make-pages/RSS.hs b/make-pages/RSS.hs index d3b5160..c20343f 100644 --- a/make-pages/RSS.hs +++ b/make-pages/RSS.hs @@ -88,10 +88,16 @@ makeItem root prefix nsfw path info@(Info {title}) = [b| desc = makeDesc $ descFor nsfw info image = case previewImage info of - Just (PFull img) -> figure $ pageFile img - Just (PThumb th) -> figure $ thumbFile th + Just (PFull img) -> figure img.desc $ pageFile img + Just (PThumb th) -> figure "full image hidden" $ thumbFile th Nothing -> "" - figure p = [b|
    |] + figure alt p = [b| +
    + + $alt + +
    + |] makeDesc :: Desc -> Builder makeDesc NoDesc = "" diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index 28bfc10..d37d3d1 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -95,6 +95,8 @@ make' root siteName prefix nsfw _dataDir dir Just (Artist {name}) -> [b|by $name|] Nothing -> "by niss" + let alt = image0.desc + let updateDate = ifJust (last' updates) \(d, _) -> let updated = formatLong d in [b|
    updated $updated|] @@ -156,10 +158,10 @@ make' root siteName prefix nsfw _dataDir dir $buttonBar
    -
    +
    $warning' - + $alt
    @@ -297,7 +299,7 @@ altButton :: Image -> Text -> Builder altButton img i = [b| + data-link="$link"$warning' data-alt="$alt"> |] where @@ -307,6 +309,7 @@ altButton img i = [b| path' = pageFile img link = fromMaybe (bigFile img) download warning' = ifJust warning \(escAttr -> w) -> [b|$& data-warning="$w"|] + alt = img.desc makeTags :: FilePath -> [Strict.Text] -> Builder makeTags undir tags = diff --git a/script/single.ts b/script/single.ts index 21e6f8c..0cd291a 100644 --- a/script/single.ts +++ b/script/single.ts @@ -21,7 +21,8 @@ function addCWListeners(id: string | null, caption: HTMLElement): void { e => { if (e.key == 'Enter') openCW(id, caption, true) }); } -function setImage(id: string, src: string, href: string, cw: string): void { +function setImage(id: string, src: string, href: string, + alt: string, cw: string): void { const curCw = document.getElementById('cw'); const coverNew = cw != '' && !opened.has(id) && !skipAll.checked; @@ -45,12 +46,14 @@ function setImage(id: string, src: string, href: string, cw: string): void { // else no cover before or after mainimg.src = src; + mainimg.alt = mainimg.title = alt; mainlink.href = href; } function activateButton(button: HTMLInputElement, doPush = true): void { setImage(button.id, button.value, button.dataset.link!, + button.dataset.alt ?? '', button.dataset.warning ?? ''); if (doPush) history.pushState(null, '', '#' + button.id); From 645424a7d8fa9210b3d24b2072564552ce6fc59f Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:36:11 +0200 Subject: [PATCH 05/14] consistency with entity escaping --- make-pages/BuilderQQ.hs | 3 ++- make-pages/GalleryPage.hs | 2 +- make-pages/SinglePage.hs | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/make-pages/BuilderQQ.hs b/make-pages/BuilderQQ.hs index 95bba6b..de08612 100644 --- a/make-pages/BuilderQQ.hs +++ b/make-pages/BuilderQQ.hs @@ -64,7 +64,8 @@ escId = foldMap esc1 . Strict.unpack where escAttr :: Strict.Text -> Builder escAttr = foldMap esc1 . Strict.unpack where esc1 c = fromMaybe (singleton c) $ lookup c - [('<', "<"), ('>', ">"), ('"', """), ('\'', "'")] + [('<', "<"), ('>', ">"), ('"', """), ('\'', "'"), + ('&', "&")] class CanBuild a where build :: a -> Builder diff --git a/make-pages/GalleryPage.hs b/make-pages/GalleryPage.hs index 7870691..99c69ca 100644 --- a/make-pages/GalleryPage.hs +++ b/make-pages/GalleryPage.hs @@ -156,7 +156,7 @@ makeItem nsfw file info@(Info {bg}) = [b|
    |] where - title = fromMaybe info.title info.galleryTitle + title = escAttr $ fromMaybe info.title info.galleryTitle dir = takeDirectory file thumbnail = getThumb dir info nsfw' = if nsfw && anyNsfw info then [b|$& nsfw|] else "" diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index d37d3d1..68e85c6 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -95,7 +95,7 @@ make' root siteName prefix nsfw _dataDir dir Just (Artist {name}) -> [b|by $name|] Nothing -> "by niss" - let alt = image0.desc + let alt = escAttr image0.desc let updateDate = ifJust (last' updates) \(d, _) -> let updated = formatLong d in @@ -117,6 +117,8 @@ make' root siteName prefix nsfw _dataDir dir |] Nothing -> throw $ NoThumb dir + let escTitle = escAttr title + pure [b| @@ -140,13 +142,13 @@ make' root siteName prefix nsfw _dataDir dir $prefetches - $title + $escTitle $nsfwDialog
    -

    $title

    +

    $escTitle

    $formattedDate $updateDate

    From 8e5d30d372bc226187a37566731e3344e3a15e5f Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:36:40 +0200 Subject: [PATCH 06/14] simplify file lists --- Makefile | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index b27b287..0572da0 100644 --- a/Makefile +++ b/Makefile @@ -16,18 +16,11 @@ MAKEPAGES := $(TMPDIR)/make-pages YAMLS != find -L $(DATADIR) -name $(INFONAME) -TSCRIPTS != find script -name '*.ts' -STYLES != find style -name '*.css' -STYLESVGS != find style -name '*.svg' -STYLEPNGS != find style -name '*.png' +TSCRIPTS != find script -name '*.ts' +STYLES != find style -type f +FONTS != find fonts -type f - -FONTS != find fonts \ - -iname '*.eot' -or -iname '*.svg' -or \ - -iname '*.ttf' -or -iname '*.woff' -or \ - -iname '*.woff2' -or -iname '*.css' - -STATIC = $(STYLES) $(STYLEPNGS) $(STYLESVGS) $(FONTS) +STATIC = $(STYLES) $(FONTS) BSTATIC = $(patsubst %,$(BUILDDIR)/%,$(STATIC)) BSCRIPTS = $(patsubst %.ts,$(BUILDDIR)/%.js,$(TSCRIPTS)) From 5944a5502077a81658df19192e75d51b84272900 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:36:55 +0200 Subject: [PATCH 07/14] fix latest date calculation --- make-pages/Info.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make-pages/Info.hs b/make-pages/Info.hs index 4d06fb9..e14f0c5 100644 --- a/make-pages/Info.hs +++ b/make-pages/Info.hs @@ -199,7 +199,7 @@ thumb (Info {thumb', images}) = latestDateFor :: Bool -> Info -> Date latestDateFor nsfw i = maximum $ i.date : mapMaybe relDate (updatesFor nsfw i) where - relDate (date, us) = date <$ guard (not $ null us || any (.ignoreSort) us) + relDate (date, us) = date <$ guard (not $ null us || all (.ignoreSort) us) latestYearFor :: Bool -> Info -> Int latestYearFor nsfw info = (latestDateFor nsfw info).year From c088389889cba7a43d25c4398c52a0eb5600f574 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:38:35 +0200 Subject: [PATCH 08/14] fix images in rss feed - escape alt text - add "full image hidden" message if it is --- make-pages/RSS.hs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/make-pages/RSS.hs b/make-pages/RSS.hs index c20343f..ee40bdc 100644 --- a/make-pages/RSS.hs +++ b/make-pages/RSS.hs @@ -87,16 +87,21 @@ makeItem root prefix nsfw path info@(Info {title}) = [b| Artist name (Just url) -> [b|

    by $name|] desc = makeDesc $ descFor nsfw info - image = case previewImage info of - Just (PFull img) -> figure img.desc $ pageFile img + preview = previewImage info + image = case preview of + Just (PFull img) -> figure (escAttr img.desc) $ pageFile img Just (PThumb th) -> figure "full image hidden" $ thumbFile th Nothing -> "" + msg = case preview of + Just (PThumb _) -> "

    (full image hidden; open to see)

    " + _ -> "" :: Text figure alt p = [b|
    $alt
    + $msg |] makeDesc :: Desc -> Builder From 87975bb1db5a6ad99135a44f69729b2bba0b10fa Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:39:29 +0200 Subject: [PATCH 09/14] fix link embeds --- make-pages/SinglePage.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index 68e85c6..07435c6 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -106,12 +106,12 @@ make' root siteName prefix nsfw _dataDir dir let nsfwDialog = NsfwWarning.dialog nsfw' let imageMeta = case previewImage info of - Just (PFull (Image {path})) -> [b| + Just (PFull (pageFile -> path)) -> [b| |] - Just (PThumb path) -> [b| + Just (PThumb (thumbFile -> path)) -> [b| |] From 6f3e3a08a3217461e40dcfe6f60c5cd15981d864 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:39:42 +0200 Subject: [PATCH 10/14] blocking=render on stylesheet --- make-pages/SinglePage.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index 07435c6..5b24d90 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -124,7 +124,7 @@ make' root siteName prefix nsfw _dataDir dir - + From 7671c1837a9c24328b857e55cf75d023962669a0 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:39:53 +0200 Subject: [PATCH 11/14] fix formatting for multiple updates --- make-pages/SinglePage.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index 5b24d90..1173cef 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -17,6 +17,7 @@ import qualified Data.HashSet as Set import Data.Traversable import Data.Semigroup import Data.List.NonEmpty (toList) +import Data.Char (isSpace) -- | e.g. only nsfw images are present for a non-nsfw page @@ -366,4 +367,8 @@ makeUpdate date ups = [b|
    $desc |] where date' = formatSlash date - desc = mconcat $ map fromText $ intersperse "; " $ toList $ fmap (.desc) ups + desc = mconcat $ + intersperse "; " $ + map (fromText . Strict.dropWhileEnd isSpace) $ + toList $ + fmap (.desc) ups From 204c02f21991a5d469a32a97d5979b63d6a0ae8a Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:40:22 +0200 Subject: [PATCH 12/14] url fragment shortcuts --- script/gallery.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/script/gallery.ts b/script/gallery.ts index 6c562cd..9cab749 100644 --- a/script/gallery.ts +++ b/script/gallery.ts @@ -106,14 +106,18 @@ function makeFragment() { } } + type Shortcuts = { [short: string]: Set }; const shortcuts: Shortcuts = { - 'summary': new Set('require_artsummary'), - 'colourexamples': new Set('require_colourexample'), - 'flatexamples': new Set('require_flatexample'), - 'sketchexamples': new Set('require_sketchexample'), - 'iconexamples': new Set('require_iconexample'), - 'curated': new Set('require_curated') + summary: new Set(['require_artsummary']), + colourexamples: new Set(['require_colourexample']), + flatexamples: new Set(['require_flatexample']), + sketchexamples: new Set(['require_sketchexample']), + iconexamples: new Set(['require_iconexample']), + curated: new Set(['require_curated']), + gecs: new Set(['require_niss', 'require_nisse']), + qt: new Set(['require_q_t_']), + kesi: new Set(['require_kesi']), }; function useFragment() { From 010b590d3fa3daaefa5ac95778f1dfbc2a2382e6 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:42:21 +0200 Subject: [PATCH 13/14] slight refactor --- script/gallery.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/script/gallery.ts b/script/gallery.ts index 9cab749..738f23b 100644 --- a/script/gallery.ts +++ b/script/gallery.ts @@ -199,12 +199,11 @@ function setup() { itemsByYear = new Map; for (const item of items) { const year = item.dataset.year; - if (year !== undefined) { - if (!itemsByYear.has(year)) { - itemsByYear.set(year, new Set([item])); - } else { - itemsByYear.get(year)?.add(item); - } + if (!year) continue; + if (!itemsByYear.has(year)) { + itemsByYear.set(year, new Set([item])); + } else { + itemsByYear.get(year)!.add(item); } } From 73283465023d7b0af2b0992793435365937ae528 Mon Sep 17 00:00:00 2001 From: rhiannon morris Date: Mon, 21 Oct 2024 14:42:28 +0200 Subject: [PATCH 14/14] fix hidden year markers --- style/shiny/gallery.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style/shiny/gallery.css b/style/shiny/gallery.css index 4dd83fe..b21904e 100644 --- a/style/shiny/gallery.css +++ b/style/shiny/gallery.css @@ -186,7 +186,7 @@ main { box-shadow: var(--focus-box); } -.year-marker { +.year-marker:not([hidden]) { /* uncomment to reenable line breaks before year markers */ /* grid-area: auto / 1; */ padding: var(--border-thickness);