|
|
@ -2,6 +2,7 @@ package main
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
import (
|
|
|
|
"slices"
|
|
|
|
"slices"
|
|
|
|
|
|
|
|
"strings"
|
|
|
|
"unicode"
|
|
|
|
"unicode"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
@ -124,13 +125,21 @@ func genRangeInclusive[T character](start, end T) []T {
|
|
|
|
return toRet
|
|
|
|
return toRet
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Returns a rune-slice containing all possible cases of the given rune.
|
|
|
|
// Returns a rune-slice containing all possible cases of the given rune, given the
|
|
|
|
|
|
|
|
// 'caseInsensitive' boolean variable.
|
|
|
|
|
|
|
|
// If this variable is false, the rune is returned as-is, without modifications.
|
|
|
|
|
|
|
|
// If it is true, then we return all possible cases of the
|
|
|
|
|
|
|
|
// rune.
|
|
|
|
// At the moment, this includes:
|
|
|
|
// At the moment, this includes:
|
|
|
|
// 1. Upper case
|
|
|
|
// 1. Upper case
|
|
|
|
// 2. Lower case
|
|
|
|
// 2. Lower case
|
|
|
|
// 3. Title case
|
|
|
|
// 3. Title case
|
|
|
|
func allCases(r rune) []rune {
|
|
|
|
func allCases(r rune, caseInsensitive bool) []rune {
|
|
|
|
return []rune{unicode.ToLower(r), unicode.ToUpper(r), unicode.ToTitle(r)}
|
|
|
|
if caseInsensitive {
|
|
|
|
|
|
|
|
return []rune{unicode.ToLower(r), unicode.ToUpper(r), unicode.ToTitle(r)}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return []rune{r}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func isHex(c rune) bool {
|
|
|
|
func isHex(c rune) bool {
|
|
|
@ -150,3 +159,17 @@ func replaceByValue[T comparable](slc []T, toReplace T, replaceWith T) []T {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return slc
|
|
|
|
return slc
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// swapCase swaps the case of every character in the given string, and returns
|
|
|
|
|
|
|
|
// the new string.
|
|
|
|
|
|
|
|
func swapCase(str string) string {
|
|
|
|
|
|
|
|
return strings.Map(func(r rune) rune {
|
|
|
|
|
|
|
|
switch {
|
|
|
|
|
|
|
|
case unicode.IsLower(r):
|
|
|
|
|
|
|
|
return unicode.ToUpper(r)
|
|
|
|
|
|
|
|
case unicode.IsUpper(r):
|
|
|
|
|
|
|
|
return unicode.ToLower(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return r
|
|
|
|
|
|
|
|
}, str)
|
|
|
|
|
|
|
|
}
|
|
|
|