hledger-lib-0.9: Core types and utilities for working with hledger (or c++ ledger) data.

Ledger.Types

Description

Most data types are defined here to avoid import cycles. Here is an overview of the hledger data model:

 Ledger              -- hledger's ledger is a journal file plus cached/derived data
  Journal            -- a representation of the journal file, containing..
   [Transaction]     -- ..journal transactions, which have date, status, code, description and..
    [Posting]        -- ..two or more account postings (account name and amount)
  Tree AccountName   -- all account names as a tree
  Map AccountName Account -- a map from account name to account info (postings and balances)

For more detailed documentation on each type, see the corresponding modules.

Terminology has been in flux:

  • ledger 2 had entries containing transactions.
  • hledger 0.4 had Entrys containing RawTransactions, which were flattened to Transactions.
  • ledger 3 has transactions containing postings.
  • hledger 0.5 had LedgerTransactions containing Postings, which were flattened to Transactions.
  • hledger 0.8 has Transactions containing Postings, and no flattened type.

Synopsis

Documentation

data Side Source

Constructors

L 
R 

Instances

data Commodity Source

Constructors

Commodity 

Fields

symbol :: String

the commodity's symbol display preferences for amounts of this commodity

side :: Side

should the symbol appear on the left or the right

spaced :: Bool

should there be a space between symbol and quantity

comma :: Bool

should thousands be comma-separated

precision :: Int

number of decimal places to display

data Amount Source

Constructors

Amount 

Fields

commodity :: Commodity
 
quantity :: Double
 
price :: Maybe MixedAmount

unit price/conversion rate for this amount at posting time

data Posting Source

Constructors

Posting 

Fields

pstatus :: Bool
 
paccount :: AccountName
 
pamount :: MixedAmount
 
pcomment :: String
 
ptype :: PostingType
 
ptransaction :: Maybe Transaction

this posting's parent transaction (co-recursive types). Tying this knot gets tedious, Maybe makes it easier/optional.

Instances

data Account Source

Constructors

Account 

Fields

aname :: AccountName
 
apostings :: [Posting]

transactions in this account

abalance :: MixedAmount

sum of transactions in this account and subaccounts

Instances

data FilterSpec Source

A generic, pure specification of how to filter transactions/postings. This exists to keep app-specific options out of the hledger library.

Constructors

FilterSpec 

Fields

datespan :: DateSpan

only include if in this date span

cleared :: Maybe Bool

only include if cleared/uncleared/don't care

real :: Bool

only include if real/don't care

empty :: Bool

include if empty (ie amount is zero)

costbasis :: Bool

convert all amounts to cost basis

acctpats :: [String]

only include if matching these account patterns

descpats :: [String]

only include if matching these description patterns

whichdate :: WhichDate

which dates to use (actual or effective)

depth :: Maybe Int
 

Instances