reg prints balance per xaction now
parent
4831914251
commit
4d484b8aa4
|
|
@ -88,24 +88,17 @@ func Main() {
|
|||
|
||||
FPrintBalances(os.Stdout, balances)
|
||||
case "reg":
|
||||
register := deltas.Register()
|
||||
transactions := deltas.Transactions()
|
||||
if likePattern != "" {
|
||||
register = register.Like(likePattern)
|
||||
transactions = transactions.Like(ledger.LikeName(likePattern))
|
||||
}
|
||||
if notLikePattern != "" {
|
||||
register = register.NotLike(notLikePattern)
|
||||
transactions = transactions.NotLike(ledger.NotLikeName(notLikePattern))
|
||||
}
|
||||
|
||||
var prev ledger.Balances
|
||||
for _, date := range register.Dates() {
|
||||
balances := register[date]
|
||||
|
||||
if newBalances := balances.Sub(prev).Nonzero(); len(newBalances) > 0 {
|
||||
fmt.Println(date)
|
||||
FPrintBalances(os.Stdout, newBalances)
|
||||
}
|
||||
|
||||
prev = balances
|
||||
for _, transaction := range transactions {
|
||||
fmt.Println(transaction[0].Date)
|
||||
FPrintBalances(os.Stdout, ledger.Deltas(transaction).Balances())
|
||||
}
|
||||
default:
|
||||
panic("unknown command " + positional[0])
|
||||
|
|
|
|||
|
|
@ -41,6 +41,13 @@ func LikeNotName(pattern string) Like {
|
|||
}
|
||||
}
|
||||
|
||||
func NotLikeName(pattern string) Like {
|
||||
foo := LikeName(pattern)
|
||||
return func(d Delta) bool {
|
||||
return !foo(d)
|
||||
}
|
||||
}
|
||||
|
||||
func LikeName(pattern string) Like {
|
||||
return func(d Delta) bool {
|
||||
return like(pattern, d.Name)
|
||||
|
|
|
|||
|
|
@ -42,6 +42,26 @@ func (deltas Deltas) Transactions() Transactions {
|
|||
return result
|
||||
}
|
||||
|
||||
func (transactions Transactions) NotLike(like ...Like) Transactions {
|
||||
result := make(Transactions, 0, len(transactions))
|
||||
for _, transaction := range transactions {
|
||||
if matching := (Deltas)(transaction).Like(like...); len(matching) == 0 {
|
||||
result = append(result, transaction)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (transactions Transactions) Like(like ...Like) Transactions {
|
||||
result := make(Transactions, 0, len(transactions))
|
||||
for _, transaction := range transactions {
|
||||
if matching := (Deltas)(transaction).Like(like...); len(matching) > 0 {
|
||||
result = append(result, transaction)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (transaction Transaction) Payee() string {
|
||||
balances := Deltas(transaction).Balances()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue