| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package util
- import (
- "fmt"
- "math"
- "regexp"
- "strings"
- "time"
- )
- // StringsFallback2 returns the first of two not empty strings.
- func StringsFallback2(val1 string, val2 string) string {
- return stringsFallback(val1, val2)
- }
- // StringsFallback3 returns the first of three not empty strings.
- func StringsFallback3(val1 string, val2 string, val3 string) string {
- return stringsFallback(val1, val2, val3)
- }
- func stringsFallback(vals ...string) string {
- for _, v := range vals {
- if v != "" {
- return v
- }
- }
- return ""
- }
- // SplitString splits a string by commas or empty spaces.
- func SplitString(str string) []string {
- if len(str) == 0 {
- return []string{}
- }
- return regexp.MustCompile("[, ]+").Split(str, -1)
- }
- // GetAgeString returns a string representing certain time from years to minutes.
- func GetAgeString(t time.Time) string {
- if t.IsZero() {
- return "?"
- }
- sinceNow := time.Since(t)
- minutes := sinceNow.Minutes()
- years := int(math.Floor(minutes / 525600))
- months := int(math.Floor(minutes / 43800))
- days := int(math.Floor(minutes / 1440))
- hours := int(math.Floor(minutes / 60))
- if years > 0 {
- return fmt.Sprintf("%dy", years)
- }
- if months > 0 {
- return fmt.Sprintf("%dM", months)
- }
- if days > 0 {
- return fmt.Sprintf("%dd", days)
- }
- if hours > 0 {
- return fmt.Sprintf("%dh", hours)
- }
- if int(minutes) > 0 {
- return fmt.Sprintf("%dm", int(minutes))
- }
- return "< 1m"
- }
- // ToCamelCase changes kebab case, snake case or mixed strings to camel case. See unit test for examples.
- func ToCamelCase(str string) string {
- var finalParts []string
- parts := strings.Split(str, "_")
- for _, part := range parts {
- finalParts = append(finalParts, strings.Split(part, "-")...)
- }
- for index, part := range finalParts[1:] {
- finalParts[index+1] = strings.Title(part)
- }
- return strings.Join(finalParts, "")
- }
|