44 lines
913 B
Go
44 lines
913 B
Go
package ui
|
|
|
|
import "unicode"
|
|
|
|
// QuickCharInString is used for finding the "quick char" in a string. A quick char
|
|
// suffixes a '_' (underscore). So basically, this function returns any rune after
|
|
// an underscore. The rune is always made lowercase. The bool returned is whether
|
|
// the rune was found.
|
|
func QuickCharInString(s string) (bool, rune) {
|
|
runes := []rune(s)
|
|
for i, r := range runes {
|
|
if r == '_' {
|
|
if i+1 < len(runes) {
|
|
return true, unicode.ToLower(runes[i+1])
|
|
} else {
|
|
return false, ' '
|
|
}
|
|
}
|
|
}
|
|
return false, ' '
|
|
}
|
|
|
|
// Max returns the larger integer.
|
|
func Max(a, b int) int {
|
|
if a > b {
|
|
return a
|
|
}
|
|
return b
|
|
}
|
|
|
|
// Min returns the smaller integer.
|
|
func Min(a, b int) int {
|
|
if a < b {
|
|
return a
|
|
}
|
|
return b
|
|
}
|
|
|
|
// Clamp keeps `v` within `a` and `b` numerically. `a` must be smaller than `b`.
|
|
// Returns clamped `v`.
|
|
func Clamp(v, a, b int) int {
|
|
return Max(a, Min(v, b))
|
|
}
|