This patch replaces the strings used in the Entry, TimeLogEntry, and Transaction records with real types. Rather than use the inbuild system date and time types directly, two custom types have been implemented that wrap UTCTime: Date and DateTime. A minimal API for these has been added.
44 lines
1.3 KiB
Haskell
44 lines
1.3 KiB
Haskell
{-|
|
|
|
|
Utilities for top-level modules and/or ghci. See also "Ledger.Utils".
|
|
|
|
-}
|
|
|
|
module Utils
|
|
where
|
|
import qualified Data.Map as Map (lookup)
|
|
import Options
|
|
import Ledger
|
|
|
|
|
|
-- | get a RawLedger from the given file path
|
|
rawledgerfromfile :: FilePath -> IO RawLedger
|
|
rawledgerfromfile f = do
|
|
parsed <- parseLedgerFile f
|
|
return $ either (\_ -> RawLedger [] [] [] "") id parsed
|
|
|
|
-- | get a cached Ledger from the given file path
|
|
ledgerfromfile :: FilePath -> IO Ledger
|
|
ledgerfromfile f = do
|
|
l <- rawledgerfromfile f
|
|
return $ cacheLedger $ filterRawLedger Nothing Nothing [] False False l
|
|
|
|
-- | get a RawLedger from the file your LEDGER environment variable
|
|
-- variable points to or (WARNING) an empty one if there was a problem.
|
|
myrawledger :: IO RawLedger
|
|
myrawledger = do
|
|
parsed <- ledgerFilePathFromOpts [] >>= parseLedgerFile
|
|
return $ either (\_ -> RawLedger [] [] [] "") id parsed
|
|
|
|
-- | get a cached Ledger from the file your LEDGER environment variable
|
|
-- variable points to or (WARNING) an empty one if there was a problem.
|
|
myledger :: IO Ledger
|
|
myledger = do
|
|
l <- myrawledger
|
|
return $ cacheLedger $ filterRawLedger Nothing Nothing [] False False l
|
|
|
|
-- | get a named account from your ledger file
|
|
myaccount :: AccountName -> IO Account
|
|
myaccount a = myledger >>= (return . fromMaybe nullacct . Map.lookup a . accountmap)
|
|
|