From c8243d25bfc957c26bad0403e9061716c25bf31f Mon Sep 17 00:00:00 2001 From: Aleksandr Trushkin Date: Wed, 7 Feb 2024 17:45:00 +0300 Subject: [PATCH] format another way --- cmd/cli/main.go | 39 +++++++++++++++++++++++++++++---------- internal/matcher/radix.go | 11 +++++++++-- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 5bc823a..7fcda16 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -17,6 +17,7 @@ import ( "os" "os/signal" "strconv" + "strings" "syscall" "time" @@ -399,6 +400,10 @@ func newViewItemsParamsKnownValues() *cli.Command { Name: "regex", Usage: "Registers regex to match", }, + &cli.BoolFlag{ + Name: "keys-only", + Usage: "prints only keys", + }, }, Action: decorateAction(viewItemsParamsKnownValuesAction), } @@ -611,17 +616,31 @@ func viewItemsParamsKnownValuesAction(ctx context.Context, c *cli.Command) error } } - tbl := table.New("key", "values").WithWriter(c.Writer) - for k, v := range requestedValues { - values := make([]string, 0, len(v)) - for value := range v { - values = append(values, strconv.Quote(value)) - } - tbl.AddRow(k, values) - } - tbl.Print() + bw := bufio.NewWriter(c.Writer) + _, _ = bw.WriteString("Matches:\n") - return nil + if c.Bool("keys-only") { + for k := range requestedValues { + _, _ = bw.WriteString(k + "\n") + } + } else { + for k, v := range requestedValues { + _, _ = bw.WriteString(k + ": ") + values := make([]string, 0, len(v)) + for item := range v { + values = append(values, strconv.Quote(item)) + } + valuesStr := "[" + strings.Join(values, ",") + "]\n" + _, _ = bw.WriteString(valuesStr) + } + } + + _, _ = bw.WriteString("\nPatterns:\n") + for _, pattern := range m.Patterns() { + _, _ = bw.WriteString(pattern + "\n") + } + + return bw.Flush() } func viewItemsCountAction(ctx context.Context, c *cli.Command) error { diff --git a/internal/matcher/radix.go b/internal/matcher/radix.go index c88ac7b..25a98b1 100644 --- a/internal/matcher/radix.go +++ b/internal/matcher/radix.go @@ -158,7 +158,14 @@ func (r *radixMatcher) Register(pattern string) { } func (r *radixMatcher) Patterns() []string { - out := make([]string, len(r.saved)) - copy(out, r.saved) + ownIdx := len(r.saved) + out := make([]string, len(r.saved)+len(r.regexps)) + copy(out, r.saved[:ownIdx]) + + for i := 0; i < len(r.regexps); i++ { + idx := i + ownIdx + out[idx] = r.regexps[i].String() + } + return out }