allow comment lines intermixed with posting lines
This commit is contained in:
		
							parent
							
								
									6fb1804cfd
								
							
						
					
					
						commit
						d98d136fc7
					
				@ -260,6 +260,15 @@ ledgercomment =
 | 
			
		||||
        ) 
 | 
			
		||||
    <|> 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 = do
 | 
			
		||||
  char '=' <?> "modifier transaction"
 | 
			
		||||
@ -363,8 +372,23 @@ ledgerstatus = try (do { char '*' <?> "status"; many1 spacenonewline; return Tru
 | 
			
		||||
ledgercode :: GenParser Char st String
 | 
			
		||||
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 = 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 = do
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user