diff --git a/cmd/ledger/main.go b/cmd/ledger/main.go index 7b379d8d..e7504a67 100644 --- a/cmd/ledger/main.go +++ b/cmd/ledger/main.go @@ -88,10 +88,10 @@ func main() { containsFilterArray := args[1:] switch strings.ToLower(args[0]) { case "balance", "bal": - ledger.PrintBalances(ledger.GetBalances(generalLedger, containsFilterArray), showEmptyAccounts, transactionDepth, columnWidth) + PrintBalances(ledger.GetBalances(generalLedger, containsFilterArray), showEmptyAccounts, transactionDepth, columnWidth) case "print": - ledger.PrintLedger(os.Stdout, generalLedger, columnWidth) + PrintLedger(generalLedger, columnWidth) case "register", "reg": - ledger.PrintRegister(generalLedger, containsFilterArray, columnWidth) + PrintRegister(generalLedger, containsFilterArray, columnWidth) } } diff --git a/pkg/ledger/print.go b/cmd/ledger/print.go similarity index 62% rename from pkg/ledger/print.go rename to cmd/ledger/print.go index 99ecaf49..b7b8c6b8 100644 --- a/pkg/ledger/print.go +++ b/cmd/ledger/print.go @@ -1,15 +1,16 @@ -package ledger +package main import ( "fmt" - "io" "math/big" "strings" + + "github.com/howeyc/ledger/pkg/ledger" ) // Prints out account balances formated to a windows of a width of columns. // Only shows accounts with names less than or equal to the given depth. -func PrintBalances(accountList []*Account, printZeroBalances bool, depth, columns int) { +func PrintBalances(accountList []*ledger.Account, printZeroBalances bool, depth, columns int) { overallBalance := new(big.Rat) for _, account := range accountList { accDepth := len(strings.Split(account.Name, ":")) @@ -17,37 +18,37 @@ func PrintBalances(accountList []*Account, printZeroBalances bool, depth, column overallBalance.Add(overallBalance, account.Balance) } if (printZeroBalances || account.Balance.Sign() != 0) && (depth < 0 || accDepth <= depth) { - outBalanceString := account.Balance.FloatString(DisplayPrecision) + outBalanceString := account.Balance.FloatString(ledger.DisplayPrecision) spaceCount := columns - len(account.Name) - len(outBalanceString) fmt.Printf("%s%s%s\n", account.Name, strings.Repeat(" ", spaceCount), outBalanceString) } } fmt.Println(strings.Repeat("-", columns)) - outBalanceString := overallBalance.FloatString(DisplayPrecision) + outBalanceString := overallBalance.FloatString(ledger.DisplayPrecision) spaceCount := columns - len(outBalanceString) fmt.Printf("%s%s\n", strings.Repeat(" ", spaceCount), outBalanceString) } // Prints a transaction formatted to fit in specified column width. -func PrintTransaction(w io.Writer, trans *Transaction, columns int) { - fmt.Fprintf(w, "%s %s\n", trans.Date.Format(TransactionDateFormat), trans.Payee) +func PrintTransaction(trans *ledger.Transaction, columns int) { + fmt.Printf("%s %s\n", trans.Date.Format(ledger.TransactionDateFormat), trans.Payee) for _, accChange := range trans.AccountChanges { - outBalanceString := accChange.Balance.FloatString(DisplayPrecision) + outBalanceString := accChange.Balance.FloatString(ledger.DisplayPrecision) spaceCount := columns - 4 - len(accChange.Name) - len(outBalanceString) - fmt.Fprintf(w, " %s%s%s\n", accChange.Name, strings.Repeat(" ", spaceCount), outBalanceString) + fmt.Printf(" %s%s%s\n", accChange.Name, strings.Repeat(" ", spaceCount), outBalanceString) } - fmt.Fprintln(w, "") + fmt.Println("") } // Prints all transactions as a formatted ledger file. -func PrintLedger(w io.Writer, generalLedger []*Transaction, columns int) { +func PrintLedger(generalLedger []*ledger.Transaction, columns int) { for _, trans := range generalLedger { - PrintTransaction(w, trans, columns) + PrintTransaction(trans, columns) } } // Prints each transaction that matches the given filters. -func PrintRegister(generalLedger []*Transaction, filterArr []string, columns int) { +func PrintRegister(generalLedger []*ledger.Transaction, filterArr []string, columns int) { runningBalance := new(big.Rat) for _, trans := range generalLedger { for _, accChange := range trans.AccountChanges { @@ -59,9 +60,9 @@ func PrintRegister(generalLedger []*Transaction, filterArr []string, columns int } if inFilter { runningBalance.Add(runningBalance, accChange.Balance) - writtenBytes, _ := fmt.Printf("%s %s", trans.Date.Format(TransactionDateFormat), trans.Payee) - outBalanceString := accChange.Balance.FloatString(DisplayPrecision) - outRunningBalanceString := runningBalance.FloatString(DisplayPrecision) + writtenBytes, _ := fmt.Printf("%s %s", trans.Date.Format(ledger.TransactionDateFormat), trans.Payee) + outBalanceString := accChange.Balance.FloatString(ledger.DisplayPrecision) + outRunningBalanceString := runningBalance.FloatString(ledger.DisplayPrecision) spaceCount := columns - writtenBytes - 2 - len(outBalanceString) - len(outRunningBalanceString) if spaceCount < 0 { spaceCount = 0