lib: fix parsing of status/code/desc/comments in period txn
This commit is contained in:
parent
7b47fb608e
commit
faa5b0fba7
@ -532,17 +532,11 @@ periodictransactionp = do
|
|||||||
case checkPeriodicTransactionStartDate interval span periodtxt of
|
case checkPeriodicTransactionStartDate interval span periodtxt of
|
||||||
Just e -> customFailure $ parseErrorAt off e
|
Just e -> customFailure $ parseErrorAt off e
|
||||||
Nothing -> pure ()
|
Nothing -> pure ()
|
||||||
-- The line can end here, or it can continue with one or more spaces
|
|
||||||
-- and then zero or more of the following fields. A bit awkward.
|
|
||||||
(status, code, description, (comment, tags)) <- lift $
|
|
||||||
(<|>) (eolof >> return (Unmarked, "", "", ("", []))) $ do
|
|
||||||
skipSome spacenonewline
|
|
||||||
s <- statusp
|
|
||||||
c <- codep
|
|
||||||
desc <- T.strip <$> descriptionp
|
|
||||||
(cmt, ts) <- transactioncommentp
|
|
||||||
return (s,c,desc,(cmt,ts))
|
|
||||||
|
|
||||||
|
status <- lift statusp <?> "cleared status"
|
||||||
|
code <- lift codep <?> "transaction code"
|
||||||
|
description <- lift $ T.strip <$> descriptionp
|
||||||
|
(comment, tags) <- lift transactioncommentp
|
||||||
-- next lines; use same year determined above
|
-- next lines; use same year determined above
|
||||||
postings <- postingsp (Just $ first3 $ toGregorian refdate)
|
postings <- postingsp (Just $ first3 $ toGregorian refdate)
|
||||||
|
|
||||||
@ -694,6 +688,19 @@ tests_JournalReader = tests "JournalReader" [
|
|||||||
,ptcomment = ""
|
,ptcomment = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
,test "Just date, no description" $ expectParseEq periodictransactionp
|
||||||
|
"~ 2019-01-04\n"
|
||||||
|
nullperiodictransaction {
|
||||||
|
ptperiodexpr = "2019-01-04"
|
||||||
|
,ptinterval = NoInterval
|
||||||
|
,ptspan = DateSpan (Just $ fromGregorian 2019 1 4) (Just $ fromGregorian 2019 1 5)
|
||||||
|
,ptdescription = ""
|
||||||
|
,ptcomment = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
,test "Just date, no description + empty transaction comment" $ expectParse periodictransactionp
|
||||||
|
"~ 2019-01-04\n ;\n a 1\n b\n"
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
,tests "postingp" [
|
,tests "postingp" [
|
||||||
@ -802,6 +809,15 @@ tests_JournalReader = tests "JournalReader" [
|
|||||||
," "
|
," "
|
||||||
]
|
]
|
||||||
|
|
||||||
|
,test "transactionp parses an empty transaction comment following whitespace line" $
|
||||||
|
expect $ isRight $ rjp transactionp $ T.unlines
|
||||||
|
["2012/1/1"
|
||||||
|
," ;"
|
||||||
|
," a 1"
|
||||||
|
," b"
|
||||||
|
," "
|
||||||
|
]
|
||||||
|
|
||||||
,test "comments everywhere, two postings parsed" $
|
,test "comments everywhere, two postings parsed" $
|
||||||
expectParseEqOn transactionp
|
expectParseEqOn transactionp
|
||||||
(T.unlines
|
(T.unlines
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user