@@ -4,9 +4,14 @@ import TutorialD.Interpreter.Base
44import TutorialD.Interpreter.RODatabaseContextOperator
55import TutorialD.Interpreter.DatabaseExpr
66import TutorialD.Interpreter.TransactionGraphOperator
7+
78import TutorialD.Interpreter.Import.CSV
89import TutorialD.Interpreter.Import.TutorialD
910import TutorialD.Interpreter.Import.Base
11+
12+import TutorialD.Interpreter.Export.CSV
13+import TutorialD.Interpreter.Export.Base
14+
1015import ProjectM36.Base
1116import ProjectM36.Relation.Show.Term
1217import ProjectM36.TransactionGraph
@@ -28,14 +33,16 @@ data ParsedOperation = RODatabaseContextOp RODatabaseContextOperator |
2833 DatabaseExprOp DatabaseExpr |
2934 GraphOp TransactionGraphOperator |
3035 ROGraphOp ROTransactionGraphOperator |
31− ImportOp DataImportOperator
36+ ImportOp DataImportOperator |
37+ ExportOp DataExportOperator
3238
3339interpreterParserP :: Parser ParsedOperation
3440interpreterParserP = liftM RODatabaseContextOp (roDatabaseContextOperatorP <* eof) <|>
3541 liftM GraphOp (transactionGraphOpP <* eof) <|>
3642 liftM ROGraphOp (roTransactionGraphOpP <* eof) <|>
3743 liftM DatabaseExprOp (databaseExprOpP <* eof) <|>
38− liftM ImportOp ((importCSVP <|> tutdImportP) <* eof)
44+ liftM ImportOp ((importCSVP <|> tutdImportP) <* eof) <|>
45+ liftM ExportOp (exportCSVP <* eof)
3946
4047promptText :: DisconnectedTransaction -> TransactionGraph -> StringType
4148promptText (DisconnectedTransaction parentUUID _) graph = "TutorialD (" `T.append` transInfo `T.append` "): "
@@ -63,13 +70,13 @@ evalTutorialD conn expr = case expr of
6370 maybeErr <- executeDatabaseContextExpr conn execOp
6471 case maybeErr of
6572 Just err -> barf err
66− Nothing -> return $ QuietSuccessResult
73+ Nothing -> return QuietSuccessResult
6774
6875 (GraphOp execOp) -> do
6976 maybeErr <- executeGraphExpr conn execOp
7077 case maybeErr of
7178 Just err -> barf err
72− Nothing -> return $ QuietSuccessResult
79+ Nothing -> return QuietSuccessResult
7380
7481 (ROGraphOp execOp) -> do
7582 discon <- disconnectedTransaction conn
@@ -84,6 +91,13 @@ evalTutorialD conn expr = case expr of
8491 case exprErr of
8592 Left err -> barf err
8693 Right dbexpr -> evalTutorialD conn (DatabaseExprOp dbexpr)
94+
95+ (ExportOp execOp) -> do
96+ (DisconnectedTransaction _ context) <- disconnectedTransaction conn
97+ exprErr <- evalDataExportOperator execOp context
98+ case exprErr of
99+ Just err -> barf err
100+ Nothing -> return QuietSuccessResult
87101
88102 where
89103 barf err = return $ DisplayErrorResult (T.pack (show err))