interaction helpers
This commit is contained in:
		
							parent
							
								
									1421fb6b0b
								
							
						
					
					
						commit
						7051721c60
					
				
							
								
								
									
										55
									
								
								hledger.hs
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								hledger.hs
									
									
									
									
									
								
							| @ -11,6 +11,7 @@ module Main | |||||||
| where | where | ||||||
| import System | import System | ||||||
| import Text.ParserCombinators.Parsec (ParseError) | import Text.ParserCombinators.Parsec (ParseError) | ||||||
|  | import qualified Data.Map as Map (lookup) | ||||||
| 
 | 
 | ||||||
| import Options | import Options | ||||||
| import Models | import Models | ||||||
| @ -68,17 +69,49 @@ balance opts pats = do | |||||||
|                           ((Nothing,_), False) -> 1 |                           ((Nothing,_), False) -> 1 | ||||||
|                           otherwise  -> 9999 |                           otherwise  -> 9999 | ||||||
| 
 | 
 | ||||||
| {- | -- helpers for interacting in ghci | ||||||
| interactive testing in ghci: | 
 | ||||||
|  | -- returns a Ledger parsed from the file your LEDGER environment variable | ||||||
|  | -- points to or (WARNING:) an empty one if there was a problem. | ||||||
|  | myledger :: IO Ledger | ||||||
|  | myledger = do | ||||||
|  |   parsed <- ledgerFilePath [] >>= parseLedgerFile | ||||||
|  |   let ledgerfile = either (\_ -> LedgerFile [] [] [] "") id parsed | ||||||
|  |   return $ cacheLedger (argpats [] []) ledgerfile | ||||||
|  | 
 | ||||||
|  | -- similar, but accepts a file path | ||||||
|  | ledgerfromfile :: String -> IO Ledger | ||||||
|  | ledgerfromfile f = do | ||||||
|  |   parsed <- ledgerFilePath [File f] >>= parseLedgerFile | ||||||
|  |   let ledgerfile = either (\_ -> LedgerFile [] [] [] "") id parsed | ||||||
|  |   return $ cacheLedger (argpats [] []) ledgerfile | ||||||
|  | 
 | ||||||
|  | accountnamed :: AccountName -> IO Account | ||||||
|  | accountnamed a = myledger >>= (return . fromMaybe nullacct . Map.lookup a . accounts) | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | --clearedBalanceToDate :: String -> Amount | ||||||
|  | 
 | ||||||
|  | {- | ||||||
|  | ghci examples: | ||||||
|  | 
 | ||||||
|  | $ ghci hledger.hs | ||||||
|  | GHCi, version 6.8.2: http://www.haskell.org/ghc/  :? for help | ||||||
|  | Loading package base ... linking ... done. | ||||||
|  | Ok, modules loaded: Utils, Main, Tests, Parse, Models, Ledger, LedgerFile, LedgerEntry, Amount, Currency, Types, LedgerTransaction, AccountName, Transaction, Account, TimeLog, Options. | ||||||
|  | Prelude Main> l <- myledger | ||||||
|  | <..snip..> | ||||||
|  | Ledger with 628 entries, 128 accounts | ||||||
|  | Prelude Main>  | ||||||
|  | 
 | ||||||
|  | $ ghci hledger.hs | ||||||
|  | > l <- myledger | ||||||
|  | > putStr $ drawTree $ treemap show $ accountnametree l | ||||||
|  | > putStr $ showLedgerAccounts l 1 | ||||||
|  | > printregister l | ||||||
|  | > import Types | ||||||
|  | > accounts l | ||||||
|  | > accountnamed "assets" | ||||||
| 
 | 
 | ||||||
| p <- ledgerFilePath [File "./test.ledger"] >>= parseLedgerFile |  | ||||||
| let r = either (\_ -> LedgerFile [] [] [] "") id p |  | ||||||
| let l = cacheLedger (argpats [] []) r |  | ||||||
| let ant = accountnametree l |  | ||||||
| let at = accounts l |  | ||||||
| putStr $ drawTree $ treemap show $ ant |  | ||||||
| putStr $ showLedgerAccounts l 1 |  | ||||||
| :m +Tests |  | ||||||
| l7 |  | ||||||
| 
 | 
 | ||||||
| -} | -} | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user