on 01345d5 help sign in
30 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 Left err -> pure (Left (PM36E.ParseError (T.pack (parseErrorPretty err))))
23 Right expr -> pure (Right expr)
25tutdImportP :: Parser DatabaseContextDataImportOperator
26tutdImportP = do
27 reserved ":importtutd"
28 path <- quotedString
29 spaceConsumer
30 return $ DatabaseContextDataImportOperator (T.unpack path) importTutorialD