@@ -9,20 +9,24 @@ import ProjectM36.Error
9import qualified ProjectM36.Error as PM36E
9import qualified ProjectM36.Error as PM36E
10import qualified Data.Text as T
10import qualified Data.Text as T
11import Control.Exception
11import Control.Exception
12−import qualified Data.Text.IO as TIO
12+import qualified Data.ByteString as BS
13+import qualified Data.Text.Encoding as TE
13--import a file containing TutorialD database context expressions
14--import a file containing TutorialD database context expressions
15importTutorialD :: FilePath -> IO (Either RelationalError DatabaseContextExpr)
16importTutorialD :: FilePath -> IO (Either RelationalError DatabaseContextExpr)
16importTutorialD pathIn = do
17importTutorialD pathIn = do
17− tutdData <- try (TIO.readFile pathIn) :: IO (Either IOError T.Text)
18+ eTutdBytes <- try (BS.readFile pathIn) :: IO (Either IOError BS.ByteString)
18− case tutdData of
19+ case eTutdBytes of
19 Left err -> return $ Left (ImportError $ T.pack (show err))
20 Left err -> return $ Left (ImportError $ T.pack (show err))
20− Right tutdData' ->
21+ Right tutdBytes ->
22+ case TE.decodeUtf8' tutdBytes of
23+ Left err -> pure (Left (ImportError $ T.pack (show err)))
21− case parse multipleDatabaseContextExprP "import" tutdData' of
25+ case parse multipleDatabaseContextExprP "import" tutdUtf8 of
22− --parseErrorPretty is new in megaparsec 5
26+ --parseErrorPretty is new in megaparsec 5
23− Left err -> pure (Left (PM36E.ParseError (T.pack (show err))))
27+ Left err -> pure (Left (PM36E.ParseError (T.pack (show err))))
24− Right expr -> pure (Right expr)
28+ Right expr -> pure (Right expr)
26tutdImportP :: Parser DatabaseContextDataImportOperator
30tutdImportP :: Parser DatabaseContextDataImportOperator
27tutdImportP = do
31tutdImportP = do
28 reserved ":importtutd"
32 reserved ":importtutd"