1
0
mirror of https://github.com/IBM/fp-go.git synced 2025-08-10 22:31:32 +02:00

fix: optimize strings package

Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
Dr. Carsten Leue
2024-02-06 14:43:23 +01:00
parent e166806d1b
commit 358573cc20
2 changed files with 18 additions and 10 deletions

View File

@@ -35,6 +35,12 @@ var (
// Join joins strings // Join joins strings
Join = F.Curry2(F.Bind2nd[[]string, string, string])(strings.Join) Join = F.Curry2(F.Bind2nd[[]string, string, string])(strings.Join)
// Equals returns a predicate that tests if a string is equal
Equals = F.Curry2(Eq)
// Includes returns a predicate that tests for the existence of the search string
Includes = F.Curry2(F.Swap(strings.Contains))
) )
func Eq(left string, right string) bool { func Eq(left string, right string) bool {
@@ -61,16 +67,6 @@ func Size(s string) int {
return len(s) return len(s)
} }
// Includes returns a predicate that tests for the existence of the search string
func Includes(searchString string) func(string) bool {
return F.Bind2nd(strings.Contains, searchString)
}
// Equals returns a predicate that tests if a string is equal
func Equals(other string) func(string) bool {
return F.Bind2nd(Eq, other)
}
// Format applies a format string to an arbitrary value // Format applies a format string to an arbitrary value
func Format[T any](format string) func(t T) string { func Format[T any](format string) func(t T) string {
return func(t T) string { return func(t T) string {

View File

@@ -36,3 +36,15 @@ func TestJoin(t *testing.T) {
assert.Equal(t, "a", Join(",")(A.From("a"))) assert.Equal(t, "a", Join(",")(A.From("a")))
assert.Equal(t, "", Join(",")(A.Empty[string]())) assert.Equal(t, "", Join(",")(A.Empty[string]()))
} }
func TestEquals(t *testing.T) {
assert.True(t, Equals("a")("a"))
assert.False(t, Equals("a")("b"))
assert.False(t, Equals("b")("a"))
}
func TestIncludes(t *testing.T) {
assert.True(t, Includes("a")("bab"))
assert.False(t, Includes("bab")("a"))
assert.False(t, Includes("b")("a"))
}