Compare commits
3 commits
7328346502
...
b9b0edc173
Author | SHA1 | Date | |
---|---|---|---|
b9b0edc173 | |||
4a39232603 | |||
9ee9b17526 |
7 changed files with 27 additions and 25 deletions
|
@ -7,7 +7,7 @@ module Info
|
||||||
allImages, sfwImages, nsfwImages,
|
allImages, sfwImages, nsfwImages,
|
||||||
thumb, latestDateFor, latestYearFor,
|
thumb, latestDateFor, latestYearFor,
|
||||||
sfwLinks, nsfwLinks, sfwUpdates, nsfwUpdates,
|
sfwLinks, nsfwLinks, sfwUpdates, nsfwUpdates,
|
||||||
updatesFor, hasUpdatesFor, lastUpdateFor,
|
updatesFor, bigUpdatesFor, hasUpdatesFor, lastUpdateFor,
|
||||||
tagsFor, descFor, imagesFor, linksFor,
|
tagsFor, descFor, imagesFor, linksFor,
|
||||||
|
|
||||||
CompareKey (..), compareKeyFor, compareFor, sortFor,
|
CompareKey (..), compareKeyFor, compareFor, sortFor,
|
||||||
|
@ -182,6 +182,9 @@ updatesWith p i = mapMaybe (traverse $ filterNE p) i.updates
|
||||||
updatesFor :: Bool -> Info -> [(Date, NonEmpty Update)]
|
updatesFor :: Bool -> Info -> [(Date, NonEmpty Update)]
|
||||||
updatesFor nsfw = updatesWith \u -> nsfw || u.sfw
|
updatesFor nsfw = updatesWith \u -> nsfw || u.sfw
|
||||||
|
|
||||||
|
bigUpdatesFor :: Bool -> Info -> [(Date, NonEmpty Update)]
|
||||||
|
bigUpdatesFor nsfw = updatesWith \u -> not u.ignoreSort && (nsfw || u.sfw)
|
||||||
|
|
||||||
sfwUpdates, nsfwUpdates :: Info -> [(Date, NonEmpty Update)]
|
sfwUpdates, nsfwUpdates :: Info -> [(Date, NonEmpty Update)]
|
||||||
sfwUpdates = updatesWith (.sfw)
|
sfwUpdates = updatesWith (.sfw)
|
||||||
nsfwUpdates = updatesWith (.nsfw)
|
nsfwUpdates = updatesWith (.nsfw)
|
||||||
|
|
|
@ -5,7 +5,7 @@ import Info
|
||||||
import BuilderQQ
|
import BuilderQQ
|
||||||
|
|
||||||
import Data.List (sortBy, intersperse)
|
import Data.List (sortBy, intersperse)
|
||||||
import Data.Maybe (catMaybes)
|
import Data.Maybe (catMaybes, fromMaybe)
|
||||||
import Data.Function (on)
|
import Data.Function (on)
|
||||||
import qualified Data.Text as Strict
|
import qualified Data.Text as Strict
|
||||||
import qualified Data.Text.Lazy as Lazy
|
import qualified Data.Text.Lazy as Lazy
|
||||||
|
@ -41,21 +41,28 @@ make' root name ginfo@(GalleryInfo {title, desc, prefix}) output infos = [b|
|
||||||
where
|
where
|
||||||
link = [b|$root/$prefix|]
|
link = [b|$root/$prefix|]
|
||||||
nsfw = ginfo.nsfw
|
nsfw = ginfo.nsfw
|
||||||
items = map (uncurry $ makeItem root prefix nsfw) $
|
items = concatMap (uncurry $ makeItems root prefix nsfw) $
|
||||||
sortBy (flip (compareFor nsfw `on` snd)) $
|
sortBy (flip (compareFor nsfw `on` snd)) $
|
||||||
filter (not . (.unlisted) . snd) infos
|
filter (not . (.unlisted) . snd) infos
|
||||||
selflink = case output of
|
selflink = case output of
|
||||||
Nothing -> ""
|
Nothing -> ""
|
||||||
Just o -> [b|<atom:link href="$link/$o" rel="self" />|]
|
Just o -> [b|<atom:link href="$link/$o" rel="self" />|]
|
||||||
|
|
||||||
makeItem :: Strict.Text -> FilePath -> Bool -> FilePath -> Info -> Builder
|
makeItems :: Strict.Text -> FilePath -> Bool -> FilePath -> Info -> [Builder]
|
||||||
makeItem root prefix nsfw path info@(Info {title}) = [b|
|
makeItems root prefix nsfw path info =
|
||||||
|
makeItem root prefix nsfw path info Nothing :
|
||||||
|
map (makeItem root prefix nsfw path info . Just . fst)
|
||||||
|
(bigUpdatesFor nsfw info)
|
||||||
|
|
||||||
|
makeItem :: Strict.Text -> FilePath -> Bool -> FilePath ->
|
||||||
|
Info -> Maybe Date -> Builder
|
||||||
|
makeItem root prefix nsfw path info@(Info {title}) date = [b|
|
||||||
<item>
|
<item>
|
||||||
<title><![CDATA[$title$suffix]]></title>
|
<title><![CDATA[$title$suffix]]></title>
|
||||||
<link>$link</link>
|
<link>$link</link>
|
||||||
<guid>$link</guid>
|
<guid>$link$guidSuffix</guid>
|
||||||
<dc:creator><![CDATA[$creator]]></dc:creator>
|
<dc:creator><![CDATA[$creator]]></dc:creator>
|
||||||
<pubDate>$date</pubDate>
|
<pubDate>$dateStr</pubDate>
|
||||||
$body
|
$body
|
||||||
</item>
|
</item>
|
||||||
|]
|
|]
|
||||||
|
@ -70,8 +77,9 @@ makeItem root prefix nsfw path info@(Info {title}) = [b|
|
||||||
|
|
||||||
suffix = if null parts then ""
|
suffix = if null parts then ""
|
||||||
else " (" <> mconcat (intersperse ", " parts) <> ")"
|
else " (" <> mconcat (intersperse ", " parts) <> ")"
|
||||||
|
guidSuffix = maybe "" (("?" <>) . show) date
|
||||||
parts = catMaybes [o18, cnt, up]
|
parts = catMaybes [o18, cnt, up]
|
||||||
up = do guard $ hasUpdatesFor nsfw info; Just "updated"
|
up = "updated" <$ date
|
||||||
o18 = do guard $ nsfw && anyNsfw info; Just "🔞"
|
o18 = do guard $ nsfw && anyNsfw info; Just "🔞"
|
||||||
cnt = do let len = maybe 0 length $ allImages <$> imagesFor nsfw info
|
cnt = do let len = maybe 0 length $ allImages <$> imagesFor nsfw info
|
||||||
guard $ len /= 1; Just [b|$len images|]
|
guard $ len /= 1; Just [b|$len images|]
|
||||||
|
@ -81,7 +89,7 @@ makeItem root prefix nsfw path info@(Info {title}) = [b|
|
||||||
|
|
||||||
creator = maybe "niss" (.name) info.artist
|
creator = maybe "niss" (.name) info.artist
|
||||||
|
|
||||||
date = formatRSS $ latestDateFor nsfw info
|
dateStr = formatRSS $ fromMaybe info.date date
|
||||||
artist = ifJust info.artist \case
|
artist = ifJust info.artist \case
|
||||||
Artist name Nothing -> [b|<p>by $name|]
|
Artist name Nothing -> [b|<p>by $name|]
|
||||||
Artist name (Just url) -> [b|<p>by <a href="$url">$name</a>|]
|
Artist name (Just url) -> [b|<p>by <a href="$url">$name</a>|]
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
|
|
||||||
--border-col: var(--text-col);
|
--border-col: var(--text-col);
|
||||||
--border: 3px solid var(--border-col);
|
--border: 3px solid var(--border-col);
|
||||||
--border-radius: 1.5em;
|
|
||||||
--background: hsla(0, 0%, 0%, 60%);
|
--background: hsla(0, 0%, 0%, 60%);
|
||||||
|
|
||||||
--button-bg: hsla(0deg, 0%, 0%, 20%);
|
--button-bg: hsla(0deg, 0%, 0%, 20%);
|
||||||
|
@ -41,7 +40,7 @@
|
||||||
--button-border: 1px solid hsla(0deg, 0%, 0%, 40%);
|
--button-border: 1px solid hsla(0deg, 0%, 0%, 40%);
|
||||||
--button-border-selected: 1px solid hsla(0deg, 0%, 100%, 30%);
|
--button-border-selected: 1px solid hsla(0deg, 0%, 100%, 30%);
|
||||||
--button-pad: 0.15em 0.8em;
|
--button-pad: 0.15em 0.8em;
|
||||||
--button-radius: 1000px;
|
--button-radius: 1000em;
|
||||||
|
|
||||||
font-family: Muller;
|
font-family: Muller;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
.filterlist label {
|
.filterlist label {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 0.15em 0.4em;
|
padding: 0.15em 0.4em;
|
||||||
border-radius: 1000px;
|
border-radius: var(--button-radius);
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#filterstuff li {
|
#filterstuff li {
|
||||||
border-radius: 1em;
|
border-radius: var(--button-radius);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
.page {
|
.page {
|
||||||
width: 37.5em;
|
width: 37.5em;
|
||||||
border-radius: var(--border-radius);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#title::before, #title::after {
|
#title::before, #title::after {
|
||||||
|
|
|
@ -24,7 +24,6 @@ dialog {
|
||||||
|
|
||||||
background: var(--background);
|
background: var(--background);
|
||||||
border: var(--border);
|
border: var(--border);
|
||||||
border-radius: var(--border-radius);
|
|
||||||
box-shadow: 0 0 50px #fff6;
|
box-shadow: 0 0 50px #fff6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +59,7 @@ dialog {
|
||||||
|
|
||||||
button {
|
button {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0.75em;
|
border-radius: var(--button-radius);
|
||||||
padding: 0.5em 1em;
|
padding: 0.5em 1em;
|
||||||
|
|
||||||
font-family: Muller;
|
font-family: Muller;
|
||||||
|
|
|
@ -62,8 +62,8 @@ body {
|
||||||
transform: rotate(-15deg);
|
transform: rotate(-15deg);
|
||||||
|
|
||||||
background: hsl(330deg, 40%, 16%);
|
background: hsl(330deg, 40%, 16%);
|
||||||
padding: 0.25em 0.5em;
|
padding: 0.35em 1em;
|
||||||
border-radius: 0.5em;
|
border-radius: var(--button-radius);
|
||||||
}
|
}
|
||||||
#cw-text b { font-weight: 900; }
|
#cw-text b { font-weight: 900; }
|
||||||
#cw-text::before {
|
#cw-text::before {
|
||||||
|
@ -108,12 +108,6 @@ body {
|
||||||
box-shadow: var(--text-shadow);
|
box-shadow: var(--text-shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
#info .light-bg {
|
|
||||||
background: hsl(0deg, 0%, 100%, 75%);
|
|
||||||
padding: 5px;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#info .floating {
|
#info .floating {
|
||||||
float: right;
|
float: right;
|
||||||
margin-left: 0.8em;
|
margin-left: 0.8em;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue