various utilities & doc updates - commodities, daysInSpan, underline
This commit is contained in:
parent
3ebc4cca48
commit
fe5498f6c2
@ -67,6 +67,11 @@ splitspan startof next s@(DateSpan (Just b) (Just e))
|
|||||||
| b >= e = []
|
| b >= e = []
|
||||||
| otherwise = [DateSpan (Just $ startof b) (Just $ next $ startof b)]
|
| otherwise = [DateSpan (Just $ startof b) (Just $ next $ startof b)]
|
||||||
++ splitspan' startof next (DateSpan (Just $ next $ startof b) (Just e))
|
++ splitspan' startof next (DateSpan (Just $ next $ startof b) (Just e))
|
||||||
|
|
||||||
|
-- | Count the days in a DateSpan, or if it is open-ended return Nothing.
|
||||||
|
daysInSpan :: DateSpan -> Maybe Integer
|
||||||
|
daysInSpan (DateSpan (Just d1) (Just d2)) = Just $ diffDays d2 d1
|
||||||
|
daysInSpan _ = Nothing
|
||||||
|
|
||||||
-- | Parse a period expression to an Interval and overall DateSpan using
|
-- | Parse a period expression to an Interval and overall DateSpan using
|
||||||
-- the provided reference date.
|
-- the provided reference date.
|
||||||
|
|||||||
@ -156,7 +156,7 @@ ledgerSubAccounts :: Ledger -> Account -> [Account]
|
|||||||
ledgerSubAccounts l Account{aname=a} =
|
ledgerSubAccounts l Account{aname=a} =
|
||||||
map (ledgerAccount l) $ filter (`isSubAccountNameOf` a) $ accountnames l
|
map (ledgerAccount l) $ filter (`isSubAccountNameOf` a) $ accountnames l
|
||||||
|
|
||||||
-- | List a ledger's transactions.
|
-- | List a ledger's "transactions", ie postings with transaction info attached.
|
||||||
ledgerTransactions :: Ledger -> [Transaction]
|
ledgerTransactions :: Ledger -> [Transaction]
|
||||||
ledgerTransactions l = rawLedgerTransactions $ rawledger l
|
ledgerTransactions l = rawLedgerTransactions $ rawledger l
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ ledgerAccountTree depth l = treemap (ledgerAccount l) $ treeprune depth $ accoun
|
|||||||
ledgerAccountTreeAt :: Ledger -> Account -> Maybe (Tree Account)
|
ledgerAccountTreeAt :: Ledger -> Account -> Maybe (Tree Account)
|
||||||
ledgerAccountTreeAt l acct = subtreeat acct $ ledgerAccountTree 9999 l
|
ledgerAccountTreeAt l acct = subtreeat acct $ ledgerAccountTree 9999 l
|
||||||
|
|
||||||
-- | The date span containing all the ledger's (filtered) transactions,
|
-- | The (fully specified) date span containing all the ledger's (filtered) transactions,
|
||||||
-- or DateSpan Nothing Nothing if there are none.
|
-- or DateSpan Nothing Nothing if there are none.
|
||||||
ledgerDateSpan :: Ledger -> DateSpan
|
ledgerDateSpan :: Ledger -> DateSpan
|
||||||
ledgerDateSpan l
|
ledgerDateSpan l
|
||||||
@ -199,6 +199,9 @@ subaccounts = ledgerSubAccounts
|
|||||||
transactions :: Ledger -> [Transaction]
|
transactions :: Ledger -> [Transaction]
|
||||||
transactions = ledgerTransactions
|
transactions = ledgerTransactions
|
||||||
|
|
||||||
|
commodities :: Ledger -> [Commodity]
|
||||||
|
commodities = nub . rawLedgerCommodities . rawledger
|
||||||
|
|
||||||
accounttree :: Int -> Ledger -> Tree Account
|
accounttree :: Int -> Ledger -> Tree Account
|
||||||
accounttree = ledgerAccountTree
|
accounttree = ledgerAccountTree
|
||||||
|
|
||||||
|
|||||||
@ -164,7 +164,7 @@ rawLedgerConvertTimeLog t l0 = l0 { ledger_txns = convertedTimeLog ++ ledger_txn
|
|||||||
where convertedTimeLog = entriesFromTimeLogEntries t $ open_timelog_entries l0
|
where convertedTimeLog = entriesFromTimeLogEntries t $ open_timelog_entries l0
|
||||||
|
|
||||||
|
|
||||||
-- | The date span containing all the raw ledger's transactions,
|
-- | The (fully specified) date span containing all the raw ledger's transactions,
|
||||||
-- or DateSpan Nothing Nothing if there are none.
|
-- or DateSpan Nothing Nothing if there are none.
|
||||||
rawLedgerDateSpan :: RawLedger -> DateSpan
|
rawLedgerDateSpan :: RawLedger -> DateSpan
|
||||||
rawLedgerDateSpan rl
|
rawLedgerDateSpan rl
|
||||||
|
|||||||
@ -63,6 +63,12 @@ elideRight width s =
|
|||||||
True -> take (width - 2) s ++ ".."
|
True -> take (width - 2) s ++ ".."
|
||||||
False -> s
|
False -> s
|
||||||
|
|
||||||
|
underline :: String -> String
|
||||||
|
underline s = s' ++ replicate (length s) '-' ++ "\n"
|
||||||
|
where s'
|
||||||
|
| last s == '\n' = s
|
||||||
|
| otherwise = s ++ "\n"
|
||||||
|
|
||||||
-- | Join multi-line strings as side-by-side rectangular strings of the same height, top-padded.
|
-- | Join multi-line strings as side-by-side rectangular strings of the same height, top-padded.
|
||||||
concatTopPadded :: [String] -> String
|
concatTopPadded :: [String] -> String
|
||||||
concatTopPadded strs = intercalate "\n" $ map concat $ transpose padded
|
concatTopPadded strs = intercalate "\n" $ map concat $ transpose padded
|
||||||
|
|||||||
3
Tests.hs
3
Tests.hs
@ -444,6 +444,9 @@ tests = [
|
|||||||
"use the greatest precision" ~: do
|
"use the greatest precision" ~: do
|
||||||
(rawLedgerPrecisions $ canonicaliseAmounts False $ rawLedgerWithAmounts ["1","2.00"]) `is` [2,2]
|
(rawLedgerPrecisions $ canonicaliseAmounts False $ rawLedgerWithAmounts ["1","2.00"]) `is` [2,2]
|
||||||
|
|
||||||
|
,"commodities" ~: do
|
||||||
|
commodities ledger7 `is` [Commodity {symbol="$", side=L, spaced=False, comma=False, precision=2}]
|
||||||
|
|
||||||
,"dateSpanFromOpts" ~: do
|
,"dateSpanFromOpts" ~: do
|
||||||
let todaysdate = parsedate "2008/11/26"
|
let todaysdate = parsedate "2008/11/26"
|
||||||
let opts `gives` spans = show (dateSpanFromOpts todaysdate opts) `is` spans
|
let opts `gives` spans = show (dateSpanFromOpts todaysdate opts) `is` spans
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user