on add5922 help sign in
29 lines 1.2 kB history raw
1module TutorialD.Interpreter.Import.TutorialD where
2import ProjectM36.Base
3import TutorialD.Interpreter.Import.Base
4import TutorialD.Interpreter.Base hiding (try)
5import TutorialD.Interpreter.DatabaseContextExpr
6import ProjectM36.Error
7import qualified ProjectM36.Error as PM36E
8import qualified Data.Text as T
9import Control.Exception
10import qualified Data.Text.IO as TIO
11--import a file containing TutorialD database context expressions
13importTutorialD :: FilePath -> IO (Either RelationalError DatabaseContextExpr)
14importTutorialD pathIn = do
15 tutdData <- try (TIO.readFile pathIn) :: IO (Either IOError T.Text)
16 case tutdData of
17 Left err -> return $ Left (ImportError $ T.pack (show err))
18 Right tutdData' ->
19 case parse multipleDatabaseContextExprP "import" tutdData' of
20 --parseErrorPretty is new in megaparsec 5
21 Left err -> pure (Left (PM36E.ParseError (T.pack (show err))))
22 Right expr -> pure (Right expr)
24tutdImportP :: Parser DatabaseContextDataImportOperator
25tutdImportP = do
26 reserved ":importtutd"
27 path <- quotedString
28 spaceConsumer
29 return $ DatabaseContextDataImportOperator (T.unpack path) importTutorialD