This commit is contained in:
@@ -7,8 +7,11 @@ module Roux.RecipeIndex (
|
|||||||
toSearchEntry,
|
toSearchEntry,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import qualified Data.ByteString as BS
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
|
import qualified Data.Text.Encoding as T
|
||||||
|
import qualified Data.Text.Encoding.Error as T
|
||||||
import Fleece.Aeson (EncoderDecoder)
|
import Fleece.Aeson (EncoderDecoder)
|
||||||
import Fleece.Core (constructor, list, object, optionalNullable, required, text, (#+))
|
import Fleece.Core (constructor, list, object, optionalNullable, required, text, (#+))
|
||||||
import qualified Fleece.Core as FC
|
import qualified Fleece.Core as FC
|
||||||
@@ -39,8 +42,9 @@ scanRecipes dir = do
|
|||||||
-- | Load and parse a single recipe file.
|
-- | Load and parse a single recipe file.
|
||||||
loadRecipe :: FilePath -> FilePath -> IO RecipeInfo
|
loadRecipe :: FilePath -> FilePath -> IO RecipeInfo
|
||||||
loadRecipe dir filename = do
|
loadRecipe dir filename = do
|
||||||
content <- readFile (dir </> filename)
|
bs <- BS.readFile (dir </> filename)
|
||||||
let parsed = parseCookFile (T.pack content)
|
let content = T.decodeUtf8With T.lenientDecode bs
|
||||||
|
parsed = parseCookFile content
|
||||||
title = case parsed of
|
title = case parsed of
|
||||||
Right r -> extractTitle r filename
|
Right r -> extractTitle r filename
|
||||||
Left _err -> T.pack (takeBaseName filename)
|
Left _err -> T.pack (takeBaseName filename)
|
||||||
|
|||||||
Reference in New Issue
Block a user