Handles UTF8 recipe files

This commit is contained in:
2026-05-19 23:28:37 -04:00
parent baa3c2434f
commit 166a2e7800
+6 -2
View File
@@ -9,8 +9,11 @@ module Roux.RecipeIndex (
) where
import Data.Aeson (ToJSON (..), camelTo2, defaultOptions, fieldLabelModifier, genericToJSON)
import qualified Data.ByteString as BS
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.Encoding.Error as T
import GHC.Generics (Generic)
import System.Directory (listDirectory)
import System.FilePath (takeBaseName, takeExtension, (</>))
@@ -39,8 +42,9 @@ scanRecipes dir = do
-- | Load and parse a single recipe file.
loadRecipe :: FilePath -> FilePath -> IO RecipeInfo
loadRecipe dir filename = do
content <- readFile (dir </> filename)
let parsed = parseCookFile (T.pack content)
bs <- BS.readFile (dir </> filename)
let content = T.decodeUtf8With T.lenientDecode bs
parsed = parseCookFile content
title = case parsed of
Right r -> extractTitle r filename
Left _err -> T.pack (takeBaseName filename)