lib: csv reader gets balance-style directive
This commit is contained in:
		
							parent
							
								
									fb3c1a132c
								
							
						
					
					
						commit
						39bc183340
					
				@ -523,6 +523,7 @@ directives =
 | 
				
			|||||||
  ,"newest-first"
 | 
					  ,"newest-first"
 | 
				
			||||||
   -- ,"base-account"
 | 
					   -- ,"base-account"
 | 
				
			||||||
   -- ,"base-currency"
 | 
					   -- ,"base-currency"
 | 
				
			||||||
 | 
					  , "balance-style"
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
directivevalp :: CsvRulesParser String
 | 
					directivevalp :: CsvRulesParser String
 | 
				
			||||||
@ -820,7 +821,21 @@ transactionFromCsvRecord sourcepos rules record = t
 | 
				
			|||||||
      tprecedingcomment        = T.pack precomment,
 | 
					      tprecedingcomment        = T.pack precomment,
 | 
				
			||||||
      tpostings                = postings
 | 
					      tpostings                = postings
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    toAssertion (a, b) = assertion{
 | 
					
 | 
				
			||||||
 | 
					    defaultAssertion =
 | 
				
			||||||
 | 
					      case mdirective "balance-style" of
 | 
				
			||||||
 | 
					        Nothing -> assertion
 | 
				
			||||||
 | 
					        Just "=" -> assertion
 | 
				
			||||||
 | 
					        Just "==" -> assertion {batotal=True}
 | 
				
			||||||
 | 
					        Just "=*" -> assertion {bainclusive=True}
 | 
				
			||||||
 | 
					        Just "==*" -> assertion{batotal=True, bainclusive=True}
 | 
				
			||||||
 | 
					        Just x -> error' $ unlines
 | 
				
			||||||
 | 
					          [ "balance-style \"" ++ x ++"\" is invalid. Use =, ==, =* or ==*." 
 | 
				
			||||||
 | 
					          , showRecord record
 | 
				
			||||||
 | 
					          , showRules rules record
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    toAssertion (a, b) = defaultAssertion{
 | 
				
			||||||
      baamount   = a,
 | 
					      baamount   = a,
 | 
				
			||||||
      baposition = b
 | 
					      baposition = b
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -475,6 +475,24 @@ $  ./hledger-csv
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
>=0
 | 
					>=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 22. read CSV with balance-style directive
 | 
				
			||||||
 | 
					<
 | 
				
			||||||
 | 
					10/2009/09,Flubber Co,50,123
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RULES
 | 
				
			||||||
 | 
					fields date, description, amount, balance
 | 
				
			||||||
 | 
					date-format %d/%Y/%m
 | 
				
			||||||
 | 
					balance-style ==*
 | 
				
			||||||
 | 
					currency $
 | 
				
			||||||
 | 
					account1 assets:myacct
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$  ./hledger-csv
 | 
				
			||||||
 | 
					2009/09/10 Flubber Co
 | 
				
			||||||
 | 
					    assets:myacct              $50 ==* $123
 | 
				
			||||||
 | 
					    income:unknown            $-50
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					>=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# . TODO: without --separator gives obscure error
 | 
					# . TODO: without --separator gives obscure error
 | 
				
			||||||
#   |
 | 
					#   |
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user