Add Lines: Sort A-Z, Sort Z-A, and Unique processors
Co-authored-by: Shelley <shelley@exe.dev>
This commit is contained in:
parent
1f61932393
commit
b2bed26be5
|
|
@ -8,6 +8,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
|
|
@ -280,6 +281,41 @@ var TextFilters = map[string]TextProcessor{
|
|||
},
|
||||
},
|
||||
|
||||
"sort-lines-asc": {
|
||||
Label: "Lines: Sort A-Z",
|
||||
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {
|
||||
lines := strings.Split(input, "\n")
|
||||
sort.Strings(lines)
|
||||
return TextFilterResponse{Output: strings.Join(lines, "\n")}, nil
|
||||
},
|
||||
},
|
||||
|
||||
"sort-lines-desc": {
|
||||
Label: "Lines: Sort Z-A",
|
||||
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {
|
||||
lines := strings.Split(input, "\n")
|
||||
sort.Sort(sort.Reverse(sort.StringSlice(lines)))
|
||||
return TextFilterResponse{Output: strings.Join(lines, "\n")}, nil
|
||||
},
|
||||
},
|
||||
|
||||
"unique-lines": {
|
||||
Label: "Lines: Unique",
|
||||
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {
|
||||
lines := strings.Split(input, "\n")
|
||||
seen := make(map[string]struct{}, len(lines))
|
||||
dst := make([]string, 0, len(lines))
|
||||
for _, line := range lines {
|
||||
if _, ok := seen[line]; ok {
|
||||
continue
|
||||
}
|
||||
seen[line] = struct{}{}
|
||||
dst = append(dst, line)
|
||||
}
|
||||
return TextFilterResponse{Output: strings.Join(dst, "\n")}, nil
|
||||
},
|
||||
},
|
||||
|
||||
"remove-blank-lines": {
|
||||
Label: "Lines: Remove Blank Lines",
|
||||
Filter: func(ctx context.Context, input string) (resp TextFilterResponse, err error) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue