code.gitea.io/gitea@v1.22.3/modules/templates/util_string.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package templates
     5  
     6  import (
     7  	"fmt"
     8  	"html/template"
     9  	"strings"
    10  
    11  	"code.gitea.io/gitea/modules/base"
    12  )
    13  
    14  type StringUtils struct{}
    15  
    16  var stringUtils = StringUtils{}
    17  
    18  func NewStringUtils() *StringUtils {
    19  	return &stringUtils
    20  }
    21  
    22  func (su *StringUtils) ToString(v any) string {
    23  	switch v := v.(type) {
    24  	case string:
    25  		return v
    26  	case template.HTML:
    27  		return string(v)
    28  	case fmt.Stringer:
    29  		return v.String()
    30  	default:
    31  		return fmt.Sprint(v)
    32  	}
    33  }
    34  
    35  func (su *StringUtils) HasPrefix(s, prefix string) bool {
    36  	return strings.HasPrefix(s, prefix)
    37  }
    38  
    39  func (su *StringUtils) Contains(s, substr string) bool {
    40  	return strings.Contains(s, substr)
    41  }
    42  
    43  func (su *StringUtils) Split(s, sep string) []string {
    44  	return strings.Split(s, sep)
    45  }
    46  
    47  func (su *StringUtils) Join(a []string, sep string) string {
    48  	return strings.Join(a, sep)
    49  }
    50  
    51  func (su *StringUtils) Cut(s, sep string) []any {
    52  	before, after, found := strings.Cut(s, sep)
    53  	return []any{before, after, found}
    54  }
    55  
    56  func (su *StringUtils) EllipsisString(s string, max int) string {
    57  	return base.EllipsisString(s, max)
    58  }
    59  
    60  func (su *StringUtils) ToUpper(s string) string {
    61  	return strings.ToUpper(s)
    62  }