Skip to content

Commit

Permalink
Move printing to command.
Browse files Browse the repository at this point in the history
  • Loading branch information
howeyc committed May 31, 2015
1 parent 4ebd3a1 commit 928b37f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 19 deletions.
6 changes: 3 additions & 3 deletions cmd/ledger/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
33 changes: 17 additions & 16 deletions pkg/ledger/print.go → cmd/ledger/print.go
Original file line number Diff line number Diff line change
@@ -1,53 +1,54 @@
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, ":"))
if accDepth == 1 {
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 {
Expand All @@ -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
Expand Down

0 comments on commit 928b37f

Please sign in to comment.