improve type docs

This commit is contained in:
Simon Michael 2009-04-03 20:55:49 +00:00
parent a78f5a1f04
commit 1ef777a1b8
4 changed files with 42 additions and 37 deletions

View File

@ -1,8 +1,11 @@
{-|
An 'Account' stores, for efficiency: an 'AccountName', all transactions in
the account (excluding subaccounts), and the account balance (including
subaccounts).
A compound data type for efficiency. An 'Account' stores
- an 'AccountName',
- all `Transaction`s (postings plus ledger transaction info) in the
account, excluding subaccounts
- and the account balance, including subaccounts.
-}

View File

@ -1,9 +1,13 @@
{-|
A 'Ledger' stores, for efficiency, a 'RawLedger' plus its tree of account
names, and a map from account names to 'Account's. It may also have had
uninteresting 'LedgerTransaction's and 'Posting's filtered out. It also stores
the complete ledger file text for the ui command.
A compound data type for efficiency. A 'Ledger' caches information derived
from a 'RawLedger' so that it is easy to query. It typically has had
uninteresting 'LedgerTransaction's and 'Posting's removed. It contains
- the original 'RawLedger'
- a tree of account names
- a map from account names to 'Account's
- the full text of the journal file, when available
-}

View File

@ -1,7 +1,9 @@
{-|
A 'Transaction' is a 'Posting' with its parent 'LedgerTransaction' \'s date and
description attached. These are what we actually query when doing reports.
A compound data type for efficiency. A 'Transaction' is a 'Posting' with
its parent 'LedgerTransaction' \'s date and description attached. These
are what we mostly work with when doing reports, and this name is pretty
ingrained.
-}

View File

@ -1,25 +1,23 @@
{-|
This is the next layer up from Ledger.Utils. All main data types are
defined here to avoid import cycles; see the corresponding modules for
documentation.
Most data types are defined here to avoid import cycles. See the
corresponding modules for each type's documentation.
On the current use of terminology:
A note about entry/transaction/posting terminology:
- ledger 2 has Entrys containing Transactions.
- hledger 0.4 has Entrys containing RawTransactions, and Transactions
which are a RawTransaction with its parent Entry's info added.
Transactions are what we most work with when reporting and are
ubiquitous in the code and docs.
- ledger 3 has Transactions containing Postings.
- hledger 0.5 has LedgerTransactions containing Postings, with
Transactions kept just as in hledger 0.4 (a Posting with it's parent's
info added). They could be named PartialTransactions or
TransactionPostings, but that just gets too verbose and obscure for devs
and users.
- ledger 2 had Entrys containing Transactions.
- hledger 0.4 had Entrys containing RawTransactions, and Transactions
which are a RawTransaction with its parent Entry's info added.
Transactions are what we most work with when reporting and are
ubiquitous in the code and docs.
- ledger 3 has Transactions containing Postings.
- hledger 0.5 has LedgerTransactions containing Postings, with
Transactions kept as before (a Posting plus it's parent's info).
These could be named PartialTransactions or TransactionPostings, but
it gets too verbose and obscure for devs and users.
-}
@ -113,22 +111,20 @@ data RawLedger = RawLedger {
filepath :: FilePath
} deriving (Eq)
-- compound types for efficiency
data Transaction = Transaction {
tnum :: Int,
status :: Bool,
date :: Day,
description :: String,
account :: AccountName,
amount :: MixedAmount,
ttype :: PostingType
status :: Bool, -- ^ posting status
date :: Day, -- ^ ledger transaction date
description :: String, -- ^ ledger transaction description
account :: AccountName, -- ^ posting account
amount :: MixedAmount, -- ^ posting amount
ttype :: PostingType -- ^ posting type
} deriving (Eq)
data Account = Account {
aname :: AccountName,
atransactions :: [Transaction],
abalance :: MixedAmount
atransactions :: [Transaction], -- ^ transactions in this account
abalance :: MixedAmount -- ^ sum of transactions in this account and subaccounts
}
data Ledger = Ledger {