nicer ghci/repl usage, update docs
This commit is contained in:
parent
a9f021eebe
commit
80ef214f79
@ -114,12 +114,12 @@ import Utils
|
||||
|
||||
|
||||
-- | Print a balance report.
|
||||
printbalance :: [Opt] -> [String] -> Ledger -> IO ()
|
||||
printbalance opts args l = putStr $ balancereport opts args l
|
||||
balance :: [Opt] -> [String] -> Ledger -> IO ()
|
||||
balance opts args l = putStr $ showBalanceReport opts args l
|
||||
|
||||
-- | Generate balance report output for a ledger, based on options.
|
||||
balancereport :: [Opt] -> [String] -> Ledger -> String
|
||||
balancereport opts args l = acctsstr ++ totalstr
|
||||
showBalanceReport :: [Opt] -> [String] -> Ledger -> String
|
||||
showBalanceReport opts args l = acctsstr ++ totalstr
|
||||
where
|
||||
acctsstr = concatMap (showAccountTreeWithBalances acctnamestoshow) $ subs treetoshow
|
||||
totalstr = if isZeroAmount total
|
||||
|
||||
@ -87,9 +87,6 @@ showEntry e =
|
||||
showaccountname s = printf "%-34s" s
|
||||
showcomment s = if (length s) > 0 then " ; "++s else ""
|
||||
|
||||
showEntries :: [Entry] -> String
|
||||
showEntries = concatMap showEntry
|
||||
|
||||
entrySetPrecision :: Int -> Entry -> Entry
|
||||
entrySetPrecision p (Entry d s c desc comm ts prec) =
|
||||
Entry d s c desc comm (map (ledgerTransactionSetPrecision p) ts) prec
|
||||
|
||||
@ -14,6 +14,9 @@ printcommandtests = TestList [
|
||||
]
|
||||
|
||||
-- | Print ledger entries in standard format.
|
||||
printentries :: [Opt] -> [String] -> Ledger -> IO ()
|
||||
printentries opts args l = putStr $ showEntries $ setprecisions $ entries $ rawledger l
|
||||
print' :: [Opt] -> [String] -> Ledger -> IO ()
|
||||
print' opts args l = putStr $ showEntries opts args l
|
||||
|
||||
showEntries :: [Opt] -> [String] -> Ledger -> String
|
||||
showEntries opts args l = concatMap showEntry $ setprecisions $ entries $ rawledger l
|
||||
where setprecisions = map (entrySetPrecision (lprecision l))
|
||||
|
||||
@ -14,8 +14,8 @@ registercommandtests = TestList [
|
||||
]
|
||||
|
||||
-- | Print a register report.
|
||||
printregister :: [Opt] -> [String] -> Ledger -> IO ()
|
||||
printregister opts args l = putStr $ showTransactionsWithBalances opts args l
|
||||
register :: [Opt] -> [String] -> Ledger -> IO ()
|
||||
register opts args l = putStr $ showTransactionsWithBalances opts args l
|
||||
|
||||
showTransactionsWithBalances :: [Opt] -> [String] -> Ledger -> String
|
||||
showTransactionsWithBalances opts args l =
|
||||
|
||||
14
Tests.hs
14
Tests.hs
@ -102,7 +102,7 @@ balancecommandtests =
|
||||
\ $-2 income\n\
|
||||
\ $1 liabilities\n\
|
||||
\" --"
|
||||
(balancereport [] [] l)
|
||||
(showBalanceReport [] [] l)
|
||||
,
|
||||
|
||||
"balance report with showsubs" ~: do
|
||||
@ -119,7 +119,7 @@ balancecommandtests =
|
||||
\ $-1 salary\n\
|
||||
\ $1 liabilities:debts\n\
|
||||
\" --"
|
||||
(balancereport [ShowSubs] [] l)
|
||||
(showBalanceReport [ShowSubs] [] l)
|
||||
,
|
||||
|
||||
"balance report with account pattern o" ~: do
|
||||
@ -130,7 +130,7 @@ balancecommandtests =
|
||||
\--------------------\n\
|
||||
\ $-1\n\
|
||||
\" --"
|
||||
(balancereport [] ["o"] l)
|
||||
(showBalanceReport [] ["o"] l)
|
||||
,
|
||||
|
||||
"balance report with account pattern o and showsubs" ~: do
|
||||
@ -143,7 +143,7 @@ balancecommandtests =
|
||||
\--------------------\n\
|
||||
\ $-1\n\
|
||||
\" --"
|
||||
(balancereport [ShowSubs] ["o"] l)
|
||||
(showBalanceReport [ShowSubs] ["o"] l)
|
||||
,
|
||||
|
||||
"balance report with account pattern a" ~: do
|
||||
@ -157,7 +157,7 @@ balancecommandtests =
|
||||
\--------------------\n\
|
||||
\ $-1\n\
|
||||
\" --"
|
||||
(balancereport [] ["a"] l)
|
||||
(showBalanceReport [] ["a"] l)
|
||||
,
|
||||
|
||||
"balance report with account pattern e" ~: do
|
||||
@ -169,7 +169,7 @@ balancecommandtests =
|
||||
\ $-2 income\n\
|
||||
\ $1 liabilities:debts\n\
|
||||
\" --"
|
||||
(balancereport [] ["e"] l)
|
||||
(showBalanceReport [] ["e"] l)
|
||||
,
|
||||
|
||||
"balance report with unmatched parent of two matched subaccounts" ~: do
|
||||
@ -180,7 +180,7 @@ balancecommandtests =
|
||||
\--------------------\n\
|
||||
\ $-1\n\
|
||||
\" --"
|
||||
(balancereport [] ["cash","saving"] l)
|
||||
(showBalanceReport [] ["cash","saving"] l)
|
||||
]
|
||||
|
||||
-- | Assert a parsed thing equals some expected thing, or print a parse error.
|
||||
|
||||
18
Utils.hs
18
Utils.hs
@ -1,22 +1,6 @@
|
||||
{-|
|
||||
|
||||
Utilities for top-level modules. See also "Ledger.Utils".
|
||||
|
||||
There are some helpers here for working with your ledger in ghci. Examples:
|
||||
|
||||
> $ rm -f *.o Ledger/*.o
|
||||
> $ ghci hledger.hs
|
||||
> *Main> l <- myledger
|
||||
> Ledger with 696 entries, 132 accounts:
|
||||
> ...
|
||||
> *Main> printbalance [] [] l
|
||||
> ...
|
||||
> *Main> printregister [] [] l
|
||||
> ...
|
||||
> *Main> accounts l
|
||||
> ...
|
||||
> *Main> myaccount "expenses:food:groceries"
|
||||
> Account expenses:food:groceries with 60 transactions
|
||||
Utilities for top-level modules and/or ghci. See also "Ledger.Utils".
|
||||
|
||||
-}
|
||||
|
||||
|
||||
37
hledger.hs
37
hledger.hs
@ -10,18 +10,43 @@ This is a minimal haskell clone of John Wiegley's ledger
|
||||
simple ledger-compatible register & balance reports from a plain text
|
||||
ledger file, and demonstrates a functional implementation of ledger.
|
||||
|
||||
You can use the command line:
|
||||
|
||||
> $ hledger --help
|
||||
|
||||
or ghci:
|
||||
|
||||
> $ ghci hledger
|
||||
> > l <- ledgerfromfile "sample.ledger"
|
||||
> > balance [] [] l
|
||||
> $-1 assets
|
||||
> $2 expenses
|
||||
> $-2 income
|
||||
> $1 liabilities:debts
|
||||
> > register [] ["income","expenses"] l
|
||||
> 2007/01/01 income income:salary $-1 $-1
|
||||
> 2007/01/01 gift income:gifts $-1 $-2
|
||||
> 2007/01/01 eat & shop expenses:food $1 $-1
|
||||
> expenses:supplies $1 0
|
||||
|
||||
-}
|
||||
|
||||
module Main
|
||||
module Main (
|
||||
module Utils,
|
||||
module Options,
|
||||
module BalanceCommand,
|
||||
module PrintCommand,
|
||||
module RegisterCommand,
|
||||
)
|
||||
where
|
||||
import qualified Data.Map as Map (lookup)
|
||||
import Options
|
||||
import Ledger
|
||||
import Utils
|
||||
import Options
|
||||
import BalanceCommand
|
||||
import PrintCommand
|
||||
import RegisterCommand
|
||||
import Tests
|
||||
import Utils
|
||||
|
||||
|
||||
main :: IO ()
|
||||
@ -32,9 +57,9 @@ main = do
|
||||
run cmd opts args
|
||||
| Help `elem` opts = putStr usage
|
||||
| Version `elem` opts = putStr version
|
||||
| cmd `isPrefixOf` "balance" = parseLedgerAndDo opts args printbalance
|
||||
| cmd `isPrefixOf` "print" = parseLedgerAndDo opts args printentries
|
||||
| cmd `isPrefixOf` "register" = parseLedgerAndDo opts args printregister
|
||||
| cmd `isPrefixOf` "balance" = parseLedgerAndDo opts args balance
|
||||
| cmd `isPrefixOf` "print" = parseLedgerAndDo opts args print'
|
||||
| cmd `isPrefixOf` "register" = parseLedgerAndDo opts args register
|
||||
| cmd `isPrefixOf` "test" = runtests >> return ()
|
||||
| otherwise = putStr usage
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user