From fa2e3c144ae129e5ea42867220c9d1df6bb377aa Mon Sep 17 00:00:00 2001 From: "Niels G. W. Serup" Date: Wed, 25 Sep 2024 23:51:33 +0200 Subject: [PATCH] Clean up paths --- byg/src/SiteGenerator.hs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/byg/src/SiteGenerator.hs b/byg/src/SiteGenerator.hs index 0adf745..e0ba404 100644 --- a/byg/src/SiteGenerator.hs +++ b/byg/src/SiteGenerator.hs @@ -3,34 +3,42 @@ module SiteGenerator (generateSite) where import Types import DependencyGenerator -thumbnailImageFilename :: Token FilePath -> DepGenM' FilePath -thumbnailImageFilename filename = do +thumbnailImagePath :: Token FilePath -> Token FilePath -> DepGenM' FilePath +thumbnailImagePath outputDir filename = do (base, ext) <- untupleDepGenM (fileComponents filename) - appendStrings (appendStrings (base, inject "-thumbnail."), ext) + name <- appendStrings (appendStrings (base, inject "-thumbnail."), ext) + joinPaths (outputDir, name) -handleRecipeDir :: Token FilePath -> Token Template -> Token FilePath -> DepGenM () -handleRecipeDir outputDir template dir = do +handleRecipeDir :: Token FilePath -> Token Template -> Token FilePath -> Token FilePath -> DepGenM () +handleRecipeDir outputDir template indexName dir = do dirContents <- listDirectory dir exts <- unzipSndDepGenM (mapDepGenM fileComponents dirContents) areImageFilenames <- mapDepGenM isImageExtension exts imageFilenames <- filterDepGenM areImageFilenames dirContents - thumbnailImageFilenames <- mapDepGenM thumbnailImageFilename imageFilenames + imagePaths <- mapDepGenM (curry joinPaths outputDir) imageFilenames + thumbnailImagePaths <- mapDepGenM (thumbnailImagePath outputDir) imageFilenames mapDepGenM_ (\files -> convertImage (files, inject $ ResizeToWidth 800)) - (ZipToken (imageFilenames, thumbnailImageFilenames)) + (ZipToken (imagePaths, thumbnailImagePaths)) recipeDirOut <- joinPaths (outputDir, dir) makeDir recipeDirOut htmlBody <- runPandoc (joinPaths (dir, inject "ret.md")) html <- applyTemplate (template, htmlBody) - saveFile (html, joinPaths (recipeDirOut, inject "index.html")) + saveFile (html, joinPaths (recipeDirOut, indexName)) generateSite :: DepGenM () generateSite = do outputDir <- inject "site" makeDir outputDir + recipesDir <- inject "retter" + outputRecipesDir <- joinPaths (outputDir, recipesDir) + makeDir outputRecipesDir template <- readTemplate (inject "template.html") - dirContents <- listDirectory (inject "retter") - mapDepGenM_ (handleRecipeDir outputDir template) dirContents + indexName <- inject "index.html" + dirContents <- listDirectory recipesDir + mapDepGenM_ (handleRecipeDir outputRecipesDir template indexName) dirContents htmlBody <- runPandoc (inject "om.md") html <- applyTemplate (template, htmlBody) - saveFile (html, joinPaths (outputDir, inject "om.html")) + aboutDir <- joinPaths (outputDir, inject "om") + makeDir aboutDir + saveFile (html, joinPaths (aboutDir, indexName))