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