diff --git a/make-pages/Depend.hs b/make-pages/Depend.hs index 3ee9438..4713fbe 100644 --- a/make-pages/Depend.hs +++ b/make-pages/Depend.hs @@ -63,13 +63,15 @@ dependGallery' (GalleryInfo {title, prefix, filters}) infos' build data_ tmp = $@path: $@pages' $@files' echo "[gallery] "$$@ mkdir -p $$(dir $$@) - $$(MAKEPAGES) $$(MPFLAGS) gallery -t "$*title" -o "$$@" \ + $$(MAKEPAGES) $$(MPFLAGS) gallery -t "$*title" $flags -o "$$@" \ $$(filter $$(DATADIR)/%/$$(INFONAME),$$^) $rules $incs |] + where + flags = filtersToFlags filters makeRules :: FilePath -- ^ prefix -> GalleryFilters diff --git a/make-pages/GalleryPage.hs b/make-pages/GalleryPage.hs index 9c6db4e..7e08ca7 100644 --- a/make-pages/GalleryPage.hs +++ b/make-pages/GalleryPage.hs @@ -16,11 +16,14 @@ newtype NoThumb = NoThumb FilePath deriving stock Eq deriving anyclass Exception instance Show NoThumb where show (NoThumb dir) = "no thumbnail for " ++ dir -make :: Text -> [(FilePath, Info)] -> Lazy.Text -make title infos = toLazyText $ make' title infos +make :: Text -- ^ title + -> Bool -- ^ nsfw is included? + -> [(FilePath, Info)] + -> Lazy.Text +make title nsfw infos = toLazyText $ make' title nsfw infos -make' :: Text -> [(FilePath, Info)] -> Builder -make' title infos' = [b|@0 +make' :: Text -> Bool -> [(FilePath, Info)] -> Builder +make' title nsfw infos = [b|@0 @@ -43,9 +46,9 @@ make' title infos' = [b|@0 infos = sortBy (cmpInfo `on` snd) infos' cmpInfo = flip (comparing #date) <> comparing #title -makeItem :: FilePath -> Info -> Builder -makeItem file info = [b|@4 -
  • +makeItem :: Bool -> FilePath -> Info -> Builder +makeItem nsfw file info = [b|@4 +
  • @@ -62,3 +65,5 @@ makeItem file info = [b|@4 $*t |] + cls | nsfw && #anyNsfw info = [b|class="item nsfw"|] + | otherwise = [b|class=item|] diff --git a/make-pages/Main.hs b/make-pages/Main.hs index e6d8ee7..b26cf3a 100644 --- a/make-pages/Main.hs +++ b/make-pages/Main.hs @@ -49,10 +49,10 @@ main2 (SinglePage {file, nsfw, output}) = do let page = SinglePage.make nsfw info writeOutput output page -main2 (GalleryPage {title, files, output, dataDir}) = do +main2 (GalleryPage {title, files, nsfw, output, dataDir}) = do infos <- mapM (infoYAML dataDir) files printV $ "infos" := infos - let page = GalleryPage.make title infos + let page = GalleryPage.make title nsfw infos writeOutput output page main2 (IndexPage {file, output}) = do diff --git a/make-pages/Options.hs b/make-pages/Options.hs index b8b1dbd..224aa19 100644 --- a/make-pages/Options.hs +++ b/make-pages/Options.hs @@ -18,6 +18,7 @@ data ModeOptions = } | GalleryPage { files :: [FilePath], + nsfw :: Bool, title :: Text, output :: Maybe FilePath, dataDir :: FilePath @@ -72,9 +73,13 @@ optionsParser = globalOpts `info` mainInfo where indexInfo = progDesc "generate an index page for all galleries" gallery = command "gallery" $ galleryOpts `info` galleryInfo - galleryOpts = GalleryPage <$> files <*> title <*> output <*> dataDir + galleryOpts = + GalleryPage <$> files <*> nsfwG <*> title <*> output <*> dataDir files = many $ strArgument $ metavar "FILE..." <> help "yaml files to read" + nsfwG = switch $ + short 'n' <> long "nsfw" <> + help "nsfw versions are included" title = strOption $ short 't' <> long "title" <> metavar "TITLE" <> help "page title"