on runtime_constructors 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.DatabaseExpr
6import Text.Parsec.String
7import Text.Parsec hiding (try)
8import ProjectM36.Error
9import Data.Either
10import qualified Data.Text as T
11import Control.Exception
12--import a file containing TutorialD database context expressions
14importTutorialD :: FilePath -> IO (Either RelationalError DatabaseExpr)
15importTutorialD pathIn = do
16 tutdData <- try (readFile pathIn) :: IO (Either IOError String)
17 case tutdData of
18 Left err -> return $ Left (ImportError $ T.pack (show err))
19 Right tutdData' -> do
20 let dbexprsErr = map (parse databaseExprP "import") (lines tutdData')
21 errs = lefts dbexprsErr
22 case errs of
23 err2:_ -> return $ Left (ParseError (T.pack (show err2)))
24 [] -> return $ Right (MultipleExpr (rights dbexprsErr))
26tutdImportP :: Parser DatabaseContextDataImportOperator
27tutdImportP = do
28 reserved ":importtutd"
29 path <- quotedString
30 whiteSpace
31 return $ DatabaseContextDataImportOperator path importTutorialD