/
styledstring.go
83 lines (70 loc) · 1.84 KB
/
styledstring.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package formater
import (
"fmt"
"github.com/iancoleman/strcase"
"strings"
"unicode"
)
// String provides for converting the source text into other spell case,like lower,snake,camel
type String struct {
source string
}
// From converts the input text to String and returns it
func From(data string) String {
return String{source: data}
}
// IsEmptyOrSpace returns true if the length of the string value is 0 after call strings.TrimSpace, or else returns false
func (s String) IsEmptyOrSpace() bool {
if len(s.source) == 0 {
return true
}
if strings.TrimSpace(s.source) == "" {
return true
}
return false
}
// Lower calls the strings.ToLower
func (s String) Lower() string {
return strings.ToLower(s.source)
}
// Upper calls the strings.ToUpper
func (s String) Upper() string {
return strings.ToUpper(s.source)
}
// ReplaceAll calls the strings.ReplaceAll
func (s String) ReplaceAll(old, new string) string {
return strings.Replace(s.source, old, new, -1)
}
// Source returns the source string value
func (s String) Source() string {
return s.source
}
// Title calls the strings.Title
func (s String) Title() string {
if s.IsEmptyOrSpace() {
return s.source
}
return strings.ToTitle(s.source)
}
// ToCamel converts the input text into camel case
func (s String) ToCamel() string {
return strcase.ToCamel(s.source)
}
// ToSnake converts the input text into snake case
func (s String) ToSnake() string {
return strcase.ToSnake(s.source)
}
// Untitle return the original string if rune is not letter at index 0
func (s String) Untitle() string {
if s.IsEmptyOrSpace() {
return s.source
}
r := rune(s.source[0])
if !unicode.IsUpper(r) && !unicode.IsLower(r) {
return s.source
}
return strcase.ToLowerCamel(s.source)
}
func (s String) ToFileName(suffix string) string {
return fmt.Sprintf("%s%s.go", strings.ToLower(s.source), suffix)
}