prettier printing
parent
7a828f8463
commit
e25d52b141
|
|
@ -7,5 +7,6 @@ type Config struct {
|
||||||
Sort string
|
Sort string
|
||||||
NoRounding bool
|
NoRounding bool
|
||||||
Depth int
|
Depth int
|
||||||
|
Reverse bool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ func Main() {
|
||||||
fs.StringVar(&config.Query.Sort, "S", "", "sort ie date")
|
fs.StringVar(&config.Query.Sort, "S", "", "sort ie date")
|
||||||
fs.BoolVar(&config.Query.NoRounding, "no-rounding", false, "no rounding")
|
fs.BoolVar(&config.Query.NoRounding, "no-rounding", false, "no rounding")
|
||||||
fs.IntVar(&config.Query.Depth, "depth", 0, "depth grouping")
|
fs.IntVar(&config.Query.Depth, "depth", 0, "depth grouping")
|
||||||
|
fs.BoolVar(&config.Query.Reverse, "r", false, "reverse printed accounts")
|
||||||
if err := fs.Parse(os.Args[1:]); err != nil {
|
if err := fs.Parse(os.Args[1:]); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
@ -86,31 +87,40 @@ func Main() {
|
||||||
balances = balances.NotLike(notLikePattern)
|
balances = balances.NotLike(notLikePattern)
|
||||||
}
|
}
|
||||||
|
|
||||||
FPrintBalances(os.Stdout, balances)
|
FPrintBalances(os.Stdout, "", balances)
|
||||||
case "reg":
|
case "reg":
|
||||||
transactions := deltas.Transactions()
|
transactions := deltas.Transactions()
|
||||||
likes := []ledger.Like{}
|
likes := []ledger.Like{}
|
||||||
if likePattern != "" {
|
if likePattern != "" {
|
||||||
like := ledger.LikeName(likePattern)
|
like := ledger.LikeName(likePattern)
|
||||||
transactions = transactions.Like(like)
|
transactions = transactions.Like(like)
|
||||||
|
if config.Query.Reverse {
|
||||||
|
like = ledger.LikeNot(like)
|
||||||
|
}
|
||||||
likes = append(likes, like)
|
likes = append(likes, like)
|
||||||
}
|
}
|
||||||
if notLikePattern != "" {
|
if notLikePattern != "" {
|
||||||
like := ledger.NotLikeName(notLikePattern)
|
like := ledger.NotLikeName(notLikePattern)
|
||||||
transactions = transactions.NotLike(like)
|
transactions = transactions.NotLike(like)
|
||||||
|
if config.Query.Reverse {
|
||||||
|
like = ledger.LikeNot(like)
|
||||||
|
}
|
||||||
likes = append(likes, like)
|
likes = append(likes, like)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, transaction := range transactions {
|
for _, transaction := range transactions {
|
||||||
fmt.Println(transaction[0].Date)
|
balances := ledger.Deltas(transaction).Like(likes...).Balances()
|
||||||
FPrintBalances(os.Stdout, ledger.Deltas(transaction).Like(likes...).Balances())
|
if len(balances) > 0 {
|
||||||
|
fmt.Printf("%s\t%s\n", transaction[0].Date, transaction[0].Description)
|
||||||
|
FPrintBalances(os.Stdout, "\t\t", ledger.Deltas(transaction).Like(likes...).Balances())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
panic("unknown command " + positional[0])
|
panic("unknown command " + positional[0])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func FPrintBalances(w io.Writer, balances ledger.Balances) {
|
func FPrintBalances(w io.Writer, linePrefix string, balances ledger.Balances) {
|
||||||
keys := []string{}
|
keys := []string{}
|
||||||
for k := range balances {
|
for k := range balances {
|
||||||
keys = append(keys, k)
|
keys = append(keys, k)
|
||||||
|
|
@ -124,7 +134,7 @@ func FPrintBalances(w io.Writer, balances ledger.Balances) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
format := fmt.Sprintf("%%-%ds\t%%s%%.2f\n", max)
|
format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f\n", linePrefix, max)
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
currencies := []ledger.Currency{}
|
currencies := []ledger.Currency{}
|
||||||
for currency := range balances[key] {
|
for currency := range balances[key] {
|
||||||
|
|
|
||||||
|
|
@ -41,13 +41,16 @@ func LikeNotName(pattern string) Like {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NotLikeName(pattern string) Like {
|
func LikeNot(like Like) Like {
|
||||||
foo := LikeName(pattern)
|
|
||||||
return func(d Delta) bool {
|
return func(d Delta) bool {
|
||||||
return !foo(d)
|
return !like(d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NotLikeName(pattern string) Like {
|
||||||
|
return LikeNot(LikeName(pattern))
|
||||||
|
}
|
||||||
|
|
||||||
func LikeName(pattern string) Like {
|
func LikeName(pattern string) Like {
|
||||||
return func(d Delta) bool {
|
return func(d Delta) bool {
|
||||||
return like(pattern, d.Name)
|
return like(pattern, d.Name)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue