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