From 83fc81887ae4cc0848f5dfc639ed50ccc06c3231 Mon Sep 17 00:00:00 2001 From: rwxrob Date: Fri, 18 Feb 2022 22:49:24 -0500 Subject: [PATCH] Add better filter types --- filter/filter.go | 31 +------------------------------ filter/filter_test.go | 14 -------------- filter/map.go | 26 ++++++++++++++++++++++++++ filter/map_test.go | 17 +++++++++++++++++ filter/types.go | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 80 insertions(+), 44 deletions(-) create mode 100644 filter/map.go create mode 100644 filter/map_test.go create mode 100644 filter/types.go diff --git a/filter/filter.go b/filter/filter.go index 7b2d92b..4d535aa 100644 --- a/filter/filter.go +++ b/filter/filter.go @@ -16,36 +16,7 @@ limitations under the License. package filter -import ( - "fmt" - "strings" -) - -// Number combines the primitives generally considered numbers by JSON -// and other high-level structure data representations. -type Number interface { - int16 | int32 | int64 | float32 | float64 -} - -// Text combines byte slice and string. -type Text interface { - []byte | string -} - -// P is for "principle" in this case. These are the types that have -// representations in JSON and other high-level structured data -// representations. -type P interface { - int16 | int32 | int64 | float32 | float64 | - []byte | string | bool -} - -// Println prints ever element of the set. -func Println[T P](set []T) { - for _, i := range set { - fmt.Println(i) - } -} +import "strings" // HasPrefix filters the Text input set and returns only those elements // that have the give prefix. diff --git a/filter/filter_test.go b/filter/filter_test.go index 93a7a1c..47ff4bc 100644 --- a/filter/filter_test.go +++ b/filter/filter_test.go @@ -39,17 +39,3 @@ func ExampleMinus() { // Output: // [one three five seven] } - -func ExamplePrintln() { - set := []string{"doe", "ray", "mi"} - filter.Println(set) - bools := []bool{false, true, true} - filter.Println(bools) - // Output: - // doe - // ray - // mi - // false - // true - // true -} diff --git a/filter/map.go b/filter/map.go new file mode 100644 index 0000000..90e8870 --- /dev/null +++ b/filter/map.go @@ -0,0 +1,26 @@ +/* +Copyright 2022 Robert S. Muhlestein. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package filter + +import "fmt" + +// Println prints ever element of the set. +func Println[T P](set []T) { + for _, i := range set { + fmt.Println(i) + } +} diff --git a/filter/map_test.go b/filter/map_test.go new file mode 100644 index 0000000..2540863 --- /dev/null +++ b/filter/map_test.go @@ -0,0 +1,17 @@ +package filter_test + +import "github.com/rwxrob/bonzai/filter" + +func ExamplePrintln() { + set := []string{"doe", "ray", "mi"} + filter.Println(set) + bools := []bool{false, true, true} + filter.Println(bools) + // Output: + // doe + // ray + // mi + // false + // true + // true +} diff --git a/filter/types.go b/filter/types.go new file mode 100644 index 0000000..5fa0f9d --- /dev/null +++ b/filter/types.go @@ -0,0 +1,36 @@ +/* +Copyright 2022 Robert S. Muhlestein. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package filter + +// Number combines the primitives generally considered numbers by JSON +// and other high-level structure data representations. +type Number interface { + int16 | int32 | int64 | float32 | float64 +} + +// Text combines byte slice and string. +type Text interface { + []byte | string +} + +// P is for "principle" in this case. These are the types that have +// representations in JSON and other high-level structured data +// representations. +type P interface { + int16 | int32 | int64 | float32 | float64 | + []byte | string | bool +}