diff --git a/ledger/group.go b/ledger/group.go new file mode 100644 index 0000000..82ea816 --- /dev/null +++ b/ledger/group.go @@ -0,0 +1,21 @@ +package ledger + +import "regexp" + +type Group func(Delta) Delta + +func GroupDate(pattern string) Group { + p := regexp.MustCompile(pattern) + return func(d Delta) Delta { + d.Date = p.FindString(d.Date) + return d + } +} + +func GroupName(pattern string) Group { + p := regexp.MustCompile(pattern) + return func(d Delta) Delta { + d.Name = p.FindString(d.Name) + return d + } +} diff --git a/ledger/group_test.go b/ledger/group_test.go new file mode 100644 index 0000000..8a321bb --- /dev/null +++ b/ledger/group_test.go @@ -0,0 +1,13 @@ +package ledger + +import "testing" + +func TestGroup(t *testing.T) { + if got := GroupDate("^20..")(Delta{Date: "2021-01"}); got.Date != "2021" { + t.Error(got) + } + + if got := GroupName("^[^:]*")(Delta{Name: "a:b:c"}); got.Name != "a" { + t.Error(got) + } +}