more ledger-handling-functions cleanup
This commit is contained in:
parent
9ea32d3f13
commit
8b117e1581
@ -38,8 +38,8 @@ instance Show Ledger where
|
||||
-- 1. filter based on account/description patterns, if any
|
||||
-- 2. cache per-account info
|
||||
-- also, figure out the precision(s) to use
|
||||
cacheLedger :: (Regex,Regex) -> LedgerFile -> Ledger
|
||||
cacheLedger pats l =
|
||||
cacheLedger :: LedgerFile -> (Regex,Regex) -> Ledger
|
||||
cacheLedger l pats =
|
||||
let
|
||||
lprecision = maximum $ map (precision . amount) $ rawLedgerTransactions l
|
||||
l' = filterLedgerEntries pats l
|
||||
|
||||
4
Tests.hs
4
Tests.hs
@ -284,7 +284,7 @@ ledger7 = LedgerFile
|
||||
]
|
||||
""
|
||||
|
||||
l7 = cacheLedger (parsePatternArgs []) ledger7
|
||||
l7 = cacheLedger ledger7 (wildcard,wildcard)
|
||||
|
||||
timelogentry1_str = "i 2007/03/11 16:19:00 hledger\n"
|
||||
timelogentry1 = TimeLogEntry 'i' "2007/03/11 16:19:00" "hledger"
|
||||
@ -375,7 +375,7 @@ test_ledgerAccountNames =
|
||||
(rawLedgerAccountNames ledger7)
|
||||
|
||||
test_cacheLedger =
|
||||
assertEqual' 15 (length $ Map.keys $ accounts $ cacheLedger (parsePatternArgs []) ledger7)
|
||||
assertEqual' 15 (length $ Map.keys $ accounts $ cacheLedger ledger7 (wildcard,wildcard))
|
||||
|
||||
test_showLedgerAccounts =
|
||||
assertEqual' 4 (length $ lines $ showLedgerAccounts l7 1)
|
||||
|
||||
18
hledger.hs
18
hledger.hs
@ -69,15 +69,15 @@ parseLedgerAndDo :: [Flag] -> (Regex,Regex) -> (Ledger -> IO ()) -> IO ()
|
||||
parseLedgerAndDo opts pats cmd = do
|
||||
path <- ledgerFilePath opts
|
||||
parsed <- parseLedgerFile path
|
||||
doWithParsedLedger pats cmd parsed
|
||||
withParsedLedgerOrErrorDo parsed pats cmd
|
||||
|
||||
doWithParsedLedger :: (Regex,Regex) -> (Ledger -> IO ()) -> (Either ParseError LedgerFile) -> IO ()
|
||||
doWithParsedLedger pats cmd parsed = do
|
||||
case parsed of Left e -> parseError e
|
||||
Right l -> cacheLedgerAndDo pats l cmd
|
||||
withParsedLedgerOrErrorDo :: (Either ParseError LedgerFile) -> (Regex,Regex) -> (Ledger -> IO ()) -> IO ()
|
||||
withParsedLedgerOrErrorDo parsed pats cmd = do
|
||||
case parsed of Left err -> parseError err
|
||||
Right l -> cacheLedgerAndDo l pats cmd
|
||||
|
||||
cacheLedgerAndDo :: (Regex,Regex) -> LedgerFile -> (Ledger -> IO ()) -> IO ()
|
||||
cacheLedgerAndDo pats l cmd = do cmd $ cacheLedger pats l
|
||||
cacheLedgerAndDo :: LedgerFile -> (Regex,Regex) -> (Ledger -> IO ()) -> IO ()
|
||||
cacheLedgerAndDo l pats cmd = do cmd $ cacheLedger l pats
|
||||
|
||||
type Command = [Flag] -> (Regex,Regex) -> IO ()
|
||||
|
||||
@ -124,14 +124,14 @@ myledger :: IO Ledger
|
||||
myledger = do
|
||||
parsed <- ledgerFilePath [] >>= parseLedgerFile
|
||||
let ledgerfile = either (\_ -> LedgerFile [] [] [] "") id parsed
|
||||
return $ cacheLedger (wildcard,wildcard) ledgerfile
|
||||
return $ cacheLedger ledgerfile (wildcard,wildcard)
|
||||
|
||||
-- | return a Ledger parsed from the given file path
|
||||
ledgerfromfile :: String -> IO Ledger
|
||||
ledgerfromfile f = do
|
||||
parsed <- ledgerFilePath [File f] >>= parseLedgerFile
|
||||
let ledgerfile = either (\_ -> LedgerFile [] [] [] "") id parsed
|
||||
return $ cacheLedger (wildcard,wildcard) ledgerfile
|
||||
return $ cacheLedger ledgerfile (wildcard,wildcard)
|
||||
|
||||
accountnamed :: AccountName -> IO Account
|
||||
accountnamed a = myledger >>= (return . fromMaybe nullacct . Map.lookup a . accounts)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user