Add better filter types

This commit is contained in:
rwxrob 2022-02-18 22:49:24 -05:00
parent 6f30dfca36
commit 83fc81887a
No known key found for this signature in database
GPG Key ID: 2B9111F33082AE77
5 changed files with 80 additions and 44 deletions

View File

@ -16,36 +16,7 @@ limitations under the License.
package filter package filter
import ( import "strings"
"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)
}
}
// HasPrefix filters the Text input set and returns only those elements // HasPrefix filters the Text input set and returns only those elements
// that have the give prefix. // that have the give prefix.

View File

@ -39,17 +39,3 @@ func ExampleMinus() {
// Output: // Output:
// [one three five seven] // [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
}

26
filter/map.go Normal file
View File

@ -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)
}
}

17
filter/map_test.go Normal file
View File

@ -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
}

36
filter/types.go Normal file
View File

@ -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
}