hledger-0.8: A command-line (or curses or web-based) double-entry accounting tool.Source codeContentsIndex
Ledger.Ledger
Description

A compound data type for efficiency. A Ledger caches information derived from a Journal for easier querying. Also it typically has had uninteresting Transactions and Postings filtered out. It contains:

  • the original unfiltered Journal
  • a tree of AccountNames
  • a map from account names to Accounts
  • the full text of the journal file, when available

This is the main object you'll deal with as a user of the Ledger library. The most useful functions also have shorter, lower-case aliases for easier interaction. Here's an example:

 > import Ledger
 > l <- readLedger "sample.ledger"
 > accountnames l
 ["assets","assets:bank","assets:bank:checking","assets:bank:saving",...
 > accounts l
 [Account assets with 0 txns and $-1 balance,Account assets:bank with...
 > topaccounts l
 [Account assets with 0 txns and $-1 balance,Account expenses with...
 > account l "assets"
 Account assets with 0 txns and $-1 balance
 > accountsmatching ["ch"] l
 accountsmatching ["ch"] l
 [Account assets:bank:checking with 4 txns and $0 balance]
 > subaccounts l (account l "assets")
 subaccounts l (account l "assets")
 [Account assets:bank with 0 txns and $1 balance,Account assets:cash...
 > head $ transactions l
 2008/01/01 income assets:bank:checking $1 RegularPosting
 > accounttree 2 l
 Node {rootLabel = Account top with 0 txns and 0 balance, subForest = [...
 > accounttreeat l (account l "assets")
 Just (Node {rootLabel = Account assets with 0 txns and $-1 balance, ...
 > datespan l -- disabled
 DateSpan (Just 2008-01-01) (Just 2009-01-01)
 > rawdatespan l
 DateSpan (Just 2008-01-01) (Just 2009-01-01)
 > ledgeramounts l
 [$1,$-1,$1,$-1,$1,$-1,$1,$1,$-2,$1,$-1]
 > commodities l
 [Commodity {symbol = "$", side = L, spaced = False, comma = False, ...
Synopsis
nullledger :: Ledger
cacheLedger :: Journal -> Ledger
cacheLedger' :: Ledger -> CachedLedger
type CachedLedger = Ledger
ledgerAccountNames :: Ledger -> [AccountName]
ledgerAccount :: Ledger -> AccountName -> Account
ledgerAccounts :: Ledger -> [Account]
ledgerTopAccounts :: Ledger -> [Account]
ledgerAccountsMatching :: [String] -> Ledger -> [Account]
ledgerSubAccounts :: Ledger -> Account -> [Account]
ledgerPostings :: Ledger -> [Posting]
ledgerAccountTree :: Int -> Ledger -> Tree Account
ledgerAccountTreeAt :: Ledger -> Account -> Maybe (Tree Account)
ledgerDateSpan :: Ledger -> DateSpan
accountnames :: Ledger -> [AccountName]
account :: Ledger -> AccountName -> Account
accounts :: Ledger -> [Account]
topaccounts :: Ledger -> [Account]
accountsmatching :: [String] -> Ledger -> [Account]
subaccounts :: Ledger -> Account -> [Account]
postings :: Ledger -> [Posting]
commodities :: Ledger -> [Commodity]
accounttree :: Int -> Ledger -> Tree Account
accounttreeat :: Ledger -> Account -> Maybe (Tree Account)
rawdatespan :: Ledger -> DateSpan
ledgeramounts :: Ledger -> [MixedAmount]
Documentation
nullledger :: LedgerSource
cacheLedger :: Journal -> LedgerSource
Convert a journal to a more efficient cached ledger, described above.
cacheLedger' :: Ledger -> CachedLedgerSource
Add (or recalculate) the cached journal info in a ledger.
type CachedLedger = LedgerSource
Like cacheLedger, but filtering the journal first.
ledgerAccountNames :: Ledger -> [AccountName]Source
List a ledger's account names.
ledgerAccount :: Ledger -> AccountName -> AccountSource
Get the named account from a (cached) ledger. If the ledger has not been cached (with crunchJournal or cacheLedger'), this returns the null account.
ledgerAccounts :: Ledger -> [Account]Source
List a ledger's accounts, in tree order
ledgerTopAccounts :: Ledger -> [Account]Source
List a ledger's top-level accounts, in tree order
ledgerAccountsMatching :: [String] -> Ledger -> [Account]Source
Accounts in ledger whose name matches the pattern, in tree order.
ledgerSubAccounts :: Ledger -> Account -> [Account]Source
List a ledger account's immediate subaccounts
ledgerPostings :: Ledger -> [Posting]Source
List a ledger's postings, in the order parsed.
ledgerAccountTree :: Int -> Ledger -> Tree AccountSource
Get a ledger's tree of accounts to the specified depth.
ledgerAccountTreeAt :: Ledger -> Account -> Maybe (Tree Account)Source
Get a ledger's tree of accounts rooted at the specified account.
ledgerDateSpan :: Ledger -> DateSpanSource
The (fully specified) date span containing all the ledger's (filtered) transactions, or DateSpan Nothing Nothing if there are none.
accountnames :: Ledger -> [AccountName]Source
Convenience aliases.
account :: Ledger -> AccountName -> AccountSource
accounts :: Ledger -> [Account]Source
topaccounts :: Ledger -> [Account]Source
accountsmatching :: [String] -> Ledger -> [Account]Source
subaccounts :: Ledger -> Account -> [Account]Source
postings :: Ledger -> [Posting]Source
commodities :: Ledger -> [Commodity]Source
accounttree :: Int -> Ledger -> Tree AccountSource
accounttreeat :: Ledger -> Account -> Maybe (Tree Account)Source
rawdatespan :: Ledger -> DateSpanSource
ledgeramounts :: Ledger -> [MixedAmount]Source
Produced by Haddock version 2.6.0