glaciers-in-archives/snowman

View on GitHub
internal/template/function/strings.go

Summary

Maintainability
A
0 mins
Test Coverage
package function

import (
    "errors"
    "regexp"
    "strings"

    "github.com/spf13/cast"
)

func Split(str interface{}, sep interface{}) []string {
    return strings.Split(cast.ToString(str), cast.ToString(sep))
}

func Replace(str interface{}, old interface{}, new interface{}, count interface{}) string {
    return strings.Replace(cast.ToString(str), cast.ToString(old), cast.ToString(new), cast.ToInt(count))
}

func ReReplace(str interface{}, old interface{}, new interface{}) (string, error) {
    re, err := regexp.Compile(cast.ToString(old))
    if err != nil {
        return "", errors.New("Invalid regular expression: " + cast.ToString(old))
    }
    return re.ReplaceAllLiteralString(cast.ToString(str), cast.ToString(new)), nil
}

func LCase(str interface{}) string {
    return strings.ToLower(cast.ToString(str))
}

func UCase(str interface{}) string {
    return strings.ToUpper(cast.ToString(str))
}

func TCase(str interface{}) string {
    return strings.Title(cast.ToString(str))
}

func HasPrefix(str interface{}, prefix interface{}) bool {
    return strings.HasPrefix(cast.ToString(str), cast.ToString(prefix))
}

func HasSuffix(str interface{}, suffix interface{}) bool {
    return strings.HasSuffix(cast.ToString(str), cast.ToString(suffix))
}

func Join(sep interface{}, strs ...interface{}) string {
    return strings.Join(cast.ToStringSlice(strs), cast.ToString(sep))
}

func Trim(str interface{}) string {
    return strings.TrimSpace(cast.ToString(str))
}

func Contains(str interface{}, substr interface{}) bool {
    return strings.Contains(cast.ToString(str), cast.ToString(substr))
}