// Copyright (c) 2023 IBM Corp. // All rights reserved. // // 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 string import ( "fmt" "strings" F "github.com/IBM/fp-go/function" "github.com/IBM/fp-go/ord" ) var ( // ToUpperCase converts the string to uppercase ToUpperCase = strings.ToUpper // ToLowerCase converts the string to lowercase ToLowerCase = strings.ToLower // Ord implements the default ordering for strings Ord = ord.FromStrictCompare[string]() // 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 { return left == right } func ToBytes(s string) []byte { return []byte(s) } func ToRunes(s string) []rune { return []rune(s) } func IsEmpty(s string) bool { return len(s) == 0 } func IsNonEmpty(s string) bool { return len(s) > 0 } func Size(s string) int { return len(s) } // Format applies a format string to an arbitrary value func Format[T any](format string) func(t T) string { return func(t T) string { return fmt.Sprintf(format, t) } }