You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

util_string.go 1.2KB

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