From 358573cc20a5a22608dfa58b281c6b400106e293 Mon Sep 17 00:00:00 2001 From: "Dr. Carsten Leue" Date: Tue, 6 Feb 2024 14:43:23 +0100 Subject: [PATCH] fix: optimize strings package Signed-off-by: Dr. Carsten Leue --- string/string.go | 16 ++++++---------- string/string_test.go | 12 ++++++++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/string/string.go b/string/string.go index 7ad08f2..d5e00d4 100644 --- a/string/string.go +++ b/string/string.go @@ -35,6 +35,12 @@ var ( // Join joins strings 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 { @@ -61,16 +67,6 @@ func Size(s string) int { 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 func Format[T any](format string) func(t T) string { return func(t T) string { diff --git a/string/string_test.go b/string/string_test.go index ee67bd2..df0fc76 100644 --- a/string/string_test.go +++ b/string/string_test.go @@ -36,3 +36,15 @@ func TestJoin(t *testing.T) { assert.Equal(t, "a", Join(",")(A.From("a"))) 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")) +}