allow comment lines intermixed with posting lines
This commit is contained in:
parent
6fb1804cfd
commit
d98d136fc7
@ -260,6 +260,15 @@ ledgercomment =
|
|||||||
)
|
)
|
||||||
<|> return "" <?> "comment"
|
<|> return "" <?> "comment"
|
||||||
|
|
||||||
|
ledgercommentline :: GenParser Char st String
|
||||||
|
ledgercommentline = do
|
||||||
|
many spacenonewline
|
||||||
|
s <- ledgercomment
|
||||||
|
optional newline
|
||||||
|
eof
|
||||||
|
return s
|
||||||
|
<?> "comment"
|
||||||
|
|
||||||
ledgerModifierTransaction :: GenParser Char LedgerFileCtx ModifierTransaction
|
ledgerModifierTransaction :: GenParser Char LedgerFileCtx ModifierTransaction
|
||||||
ledgerModifierTransaction = do
|
ledgerModifierTransaction = do
|
||||||
char '=' <?> "modifier transaction"
|
char '=' <?> "modifier transaction"
|
||||||
@ -363,8 +372,23 @@ ledgerstatus = try (do { char '*' <?> "status"; many1 spacenonewline; return Tru
|
|||||||
ledgercode :: GenParser Char st String
|
ledgercode :: GenParser Char st String
|
||||||
ledgercode = try (do { char '(' <?> "code"; code <- anyChar `manyTill` char ')'; many1 spacenonewline; return code } ) <|> return ""
|
ledgercode = try (do { char '(' <?> "code"; code <- anyChar `manyTill` char ')'; many1 spacenonewline; return code } ) <|> return ""
|
||||||
|
|
||||||
|
-- Complicated to handle intermixed comment lines.. please make me better.
|
||||||
ledgerpostings :: GenParser Char LedgerFileCtx [Posting]
|
ledgerpostings :: GenParser Char LedgerFileCtx [Posting]
|
||||||
ledgerpostings = many1 $ try ledgerposting
|
ledgerpostings = do
|
||||||
|
ctx <- getState
|
||||||
|
let p `parses` s = isRight $ parseWithCtx ctx p s
|
||||||
|
ls <- many1 linebeginningwithspaces
|
||||||
|
let ls' = filter (not . (ledgercommentline `parses`)) ls
|
||||||
|
guard (not $ null ls')
|
||||||
|
return $ map (fromparse . parseWithCtx ctx ledgerposting) ls'
|
||||||
|
<?> "ledger postings"
|
||||||
|
|
||||||
|
linebeginningwithspaces :: GenParser Char st String
|
||||||
|
linebeginningwithspaces = do
|
||||||
|
sp <- many1 spacenonewline
|
||||||
|
c <- nonspace
|
||||||
|
cs <- restofline
|
||||||
|
return $ sp ++ (c:cs) ++ "\n"
|
||||||
|
|
||||||
ledgerposting :: GenParser Char LedgerFileCtx Posting
|
ledgerposting :: GenParser Char LedgerFileCtx Posting
|
||||||
ledgerposting = do
|
ledgerposting = do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user