Compare commits

...

2 Commits

Author SHA1 Message Date
bel
84bbda1031 fix and
All checks were successful
cicd / ci (push) Successful in 51s
2025-04-06 10:40:44 -06:00
bel
9b4accafe3 neater bal print 2025-04-06 10:38:54 -06:00
2 changed files with 25 additions and 7 deletions

View File

@@ -158,7 +158,25 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
if normalized {
format = fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f (%%.2f @%%.2f (%%s%%.0f)))\n", linePrefix, max)
}
for _, key := range keys {
for i, key := range keys {
printableKey := key
if i > 0 {
j := 0
n := len(keys[i])
if n2 := len(keys[i-1]); n2 < n {
n = n2
}
for j = 0; j < n; j++ {
if keys[i-1][j] != keys[i][j] {
break
}
}
for keys[i][j] != ':' && j > 0 {
j -= 1
}
printableKey = strings.Repeat(" ", j) + keys[i][j:]
}
currencies := []ledger.Currency{}
for currency := range balances[key] {
currencies = append(currencies, currency)
@@ -182,11 +200,11 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger
}
if !normalized {
fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative)
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative)
} else {
factor := normalizer.NormalizeFactor(ledger.Delta{Name: key, Date: date})
trailingMax := maxes[currency] - math.Abs(balances[key][currency])
fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor, printableCurrency, factor*trailingMax)
fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor, printableCurrency, factor*trailingMax)
}
}
}

View File

@@ -46,17 +46,17 @@ func buildQuery(config Config, args args) (ledger.Like, error) {
switch args.peek() {
case "and":
args.pop()
var like ledger.Like
var and ledger.Like
switch args.peek() {
case "not":
args.pop()
log.Println("and not", args.peek())
like = notLike(likeName(args.pop()))
and = notLike(likeName(args.pop()))
default:
log.Println("and ", args.peek())
like = likeName(args.pop())
and = likeName(args.pop())
}
like = andLike(like, like)
like = andLike(like, and)
case "not":
args.pop()
log.Println("or not ", args.peek())