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))