2module TutorialD.Interpreter.TransactionGraphOperator where
3import TutorialD.Interpreter.Base
5import Text.Parsec.String
6import qualified Data.UUID as U
7import qualified Data.Text as T
8import ProjectM36.TransactionGraph
9import ProjectM36.Client
10import ProjectM36.Error
13jumpToHeadP :: Parser TransactionGraphOperator
15 reservedOp ":jumphead"
17 return $ JumpToHead (T.pack headid)
19jumpToTransactionP :: Parser TransactionGraphOperator
20jumpToTransactionP = do
23 return $ JumpToTransaction uuid
25branchTransactionP :: Parser TransactionGraphOperator
26branchTransactionP = do
28 branchName <- identifier
29 return $ Branch (T.pack branchName)
31commitTransactionP :: Parser TransactionGraphOperator
32commitTransactionP = do
36rollbackTransactionP :: Parser TransactionGraphOperator
37rollbackTransactionP = do
38 reservedOp ":rollback"
41showGraphP :: Parser ROTransactionGraphOperator
43 reservedOp ":showgraph"
46transactionGraphOpP :: Parser TransactionGraphOperator
47transactionGraphOpP = do
49 <|> jumpToTransactionP
50 <|> branchTransactionP
51 <|> commitTransactionP
52 <|> rollbackTransactionP
54roTransactionGraphOpP :: Parser ROTransactionGraphOperator
55roTransactionGraphOpP = showGraphP
59 uuidStr <- many (alphaNum <|> char '-')
60 case U.fromString uuidStr of
61 Nothing -> fail "Invalid uuid string"
62 Just uuid -> return uuid
66-- for interpreter-specific operations
67interpretOps :: U.UUID -> DisconnectedTransaction -> TransactionGraph -> String -> (DisconnectedTransaction, TransactionGraph, TutorialDOperatorResult)
68interpretOps newUUID trans@(DisconnectedTransaction _ context) transGraph instring = case parse interpreterOps "" instring of
69 Left _ -> (trans, transGraph, NoActionResult)
70 Right ops -> case ops of
71 Left contextOp -> (trans, transGraph, (evalContextOp context contextOp))
72 Right graphOp -> case evalGraphOp newUUID trans transGraph graphOp of
73 Left err -> (trans, transGraph, DisplayErrorResult $ T.pack (show err))
74 Right (newDiscon, newGraph, result) -> (newDiscon, newGraph, result)
77evalROGraphOp :: SessionId -> Connection -> ROTransactionGraphOperator -> IO (Either RelationalError Relation)
78evalROGraphOp sessionId conn ShowGraph = transactionGraphAsRelation sessionId conn
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list