diff --git a/make-pages/Depend.hs b/make-pages/Depend.hs
index 215aede..18632ee 100644
--- a/make-pages/Depend.hs
+++ b/make-pages/Depend.hs
@@ -32,7 +32,6 @@ dependSingle' yamlDir indexFile info prefix build nsfw =
maybe [] (toList . allImages) $
if nsfw then Just $ info.images else sfwImages info
- paths = map (.path) images
dls = mapMaybe (.download) images
extras = info.extras
@@ -40,8 +39,8 @@ dependSingle' yamlDir indexFile info prefix build nsfw =
page = dir > "index.html"
deps = unwords $ map (dir >) $
thumbFile (thumbnail info) :
- map pageFile paths ++
- map bigFile paths ++
+ map pageFile images ++
+ map bigFile images ++
dls ++ extras
dependGallery :: GalleryInfo
diff --git a/make-pages/Info.hs b/make-pages/Info.hs
index a74901b..dd407ce 100644
--- a/make-pages/Info.hs
+++ b/make-pages/Info.hs
@@ -105,7 +105,8 @@ data Image =
path :: !FilePath,
download :: !(Maybe FilePath),
nsfw :: !Bool,
- warning :: !(Maybe Text)
+ warning :: !(Maybe Text),
+ resize :: !Bool
}
deriving (Eq, Show)
@@ -266,15 +267,16 @@ getThumb dir =
thumbFile :: FilePath -> FilePath
thumbFile = addSuffix "_small"
-pageFile :: FilePath -> FilePath
-pageFile f
- | takeExtension f == ".gif" = f
- | otherwise = addSuffix "_med" f
+canResize :: Image -> Bool
+canResize i = i.resize && takeExtension i.path /= ".gif"
-bigFile :: FilePath -> FilePath
-bigFile f
- | takeExtension f == ".gif" = f
- | otherwise = addSuffix "_big" f
+pageFile :: Image -> FilePath
+pageFile img =
+ if canResize img then addSuffix "_med" img.path else img.path
+
+bigFile :: Image -> FilePath
+bigFile img =
+ if canResize img then addSuffix "_big" img.path else img.path
addSuffix :: String -> FilePath -> FilePath
addSuffix suf path =
@@ -361,15 +363,16 @@ unlabelledImage' label' y = asStr y <|> asObj y
asStr = YAML.withStr "path" \(Text.unpack -> path) ->
let label = fromMaybe (pathToLabel path) label' in
pure $ Image {label, path, download = Nothing,
- nsfw = False, warning = Nothing}
+ nsfw = False, warning = Nothing, resize = True}
asObj = YAML.withMap "image info" \m -> do
- checkKeys m ["path", "download", "nsfw", "warning"]
+ checkKeys m ["path", "download", "nsfw", "warning", "resize"]
path <- m .: "path"
download <- m .:? "download"
nsfw <- m .:? "nsfw" .!= False
warning <- m .:? "warning"
+ resize <- m .:? "resize" .!= True
let label = fromMaybe (pathToLabel path) label'
- pure $ Image {label, path, download, nsfw, warning}
+ pure $ Image {label, path, download, nsfw, warning, resize}
pathToLabel = Text.pack . gapToSpace . takeBaseName
gapToSpace = map \case '-' -> ' '; '_' -> ' '; c -> c
diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs
index 98e2b03..ea34943 100644
--- a/make-pages/SinglePage.hs
+++ b/make-pages/SinglePage.hs
@@ -52,10 +52,8 @@ make' root siteName prefix nsfw _dataDir dir
let buttonBar = makeButtonBar title $ addIds images
let image0 :| otherImages = allImages images
- let Image {path = path0, download = download0'} = image0
-
- let download0 = fromMaybe (bigFile path0) download0'
- let path0' = pageFile path0
+ let download0 = fromMaybe (bigFile image0) image0.download
+ let path0' = pageFile image0
let artistSection = makeArtist artist
let descSection = makeDesc $ descFor nsfw info
@@ -64,8 +62,8 @@ make' root siteName prefix nsfw _dataDir dir
let updates = sort $ updatesFor nsfw info
let updatesList = makeUpdates updates
- let makePrefetch (Image {path}) = [b||]
- where path' = bigFile path
+ let makePrefetch img = [b||]
+ where path' = bigFile img
let prefetches = map makePrefetch otherImages
let makeWarning w = [b|@0
@@ -309,11 +307,11 @@ altButton img i = [b|@0
|]
where
- Image {label, path, nsfw, warning, download} = img
+ Image {label, nsfw, warning, download} = img
nsfwClass = if nsfw then [b| class=nsfw|] else ""
nsfwLabelClass = if nsfw then [b| class=nsfw-label|] else ""
- path' = pageFile path
- link = fromMaybe (bigFile path) download
+ path' = pageFile img
+ link = fromMaybe (bigFile img) download
warning' = ifJust warning \(escAttr -> w) -> [b| data-warning="$w"|]
makeTags :: FilePath -> [Strict.Text] -> Builder