@@ -5,70 +5,128 @@ import (
5
5
"strings"
6
6
)
7
7
8
- // Separator is the separator for a string
9
- type Separator string
8
+ type (
9
+ // Separator is the separator for a string
10
+ Separator string
11
+
12
+ // ContentSeparator is the separator for the content
13
+ ContentSeparator struct {
14
+ LeftSeparator Separator
15
+ RightSeparator Separator
16
+ }
17
+
18
+ // MultilineSeparator is the separator for the multiline content
19
+ MultilineSeparator struct {
20
+ LineSeparator Separator
21
+ TabSize int
22
+ }
23
+ )
10
24
11
25
// Separator constants
12
26
const (
13
27
SpaceSeparator Separator = " "
14
28
CommaSeparator Separator = ","
15
29
NewLineSeparator Separator = "\n "
16
30
TabSeparator Separator = "\t "
17
- NoneSeparator Separator = ""
18
31
)
19
32
33
+ // NewContentSeparator creates a new content separator
34
+ func NewContentSeparator (leftSeparator , rightSeparator Separator ) * ContentSeparator {
35
+ return & ContentSeparator {
36
+ LeftSeparator : leftSeparator ,
37
+ RightSeparator : rightSeparator ,
38
+ }
39
+ }
40
+
41
+ // NewRepeatedContentSeparator creates a new content separator with the same separator
42
+ func NewRepeatedContentSeparator (separator Separator ) * ContentSeparator {
43
+ return NewContentSeparator (separator , separator )
44
+ }
45
+
46
+ // NewMultilineSeparator creates a new multiline separator
47
+ func NewMultilineSeparator (lineSeparator Separator , tabSize int ) * MultilineSeparator {
48
+ return & MultilineSeparator {
49
+ LineSeparator : lineSeparator ,
50
+ TabSize : tabSize ,
51
+ }
52
+ }
53
+
54
+ // TabSeparator returns a tab separator
55
+ func (m * MultilineSeparator ) TabSeparator () Separator {
56
+ return Separator (strings .Repeat (string (TabSeparator ), m .TabSize ))
57
+ }
58
+
20
59
// AddCharacters adds some characters to a string
21
- func AddCharacters (content , leftCharacters , rightCharacters string , separator Separator ) string {
22
- if separator == NoneSeparator {
23
- return leftCharacters + content + rightCharacters
60
+ func AddCharacters (content , leftCharacters , rightCharacters string , contentSeparator * ContentSeparator ) string {
61
+ if contentSeparator == nil {
62
+ return strings . Join ([] string { leftCharacters , content , rightCharacters }, "" )
24
63
}
25
- return leftCharacters + string (separator ) + content + string (separator ) + rightCharacters
64
+
65
+ return strings .Join (
66
+ []string {
67
+ leftCharacters ,
68
+ string (contentSeparator .LeftSeparator ),
69
+ content ,
70
+ string (contentSeparator .RightSeparator ),
71
+ rightCharacters ,
72
+ }, "" ,
73
+ )
26
74
}
27
75
28
76
// AddBrackets adds brackets to a string
29
- func AddBrackets (name string , separator Separator ) string {
30
- return AddCharacters (name , "[" , "]" , separator )
77
+ func AddBrackets (name string , contentSeparator * ContentSeparator ) string {
78
+ return AddCharacters (name , "[" , "]" , contentSeparator )
31
79
}
32
80
33
81
// AddCurlyBrackets adds curly brackets to a string
34
- func AddCurlyBrackets (name string ) string {
35
- return AddCharacters (name , "{" , "}" , SpaceSeparator )
82
+ func AddCurlyBrackets (name string , contentSeparator * ContentSeparator ) string {
83
+ return AddCharacters (name , "{" , "}" , contentSeparator )
36
84
}
37
85
38
86
// AddParentheses adds parentheses to a string
39
- func AddParentheses (name string ) string {
40
- return AddCharacters (name , "(" , ")" , SpaceSeparator )
87
+ func AddParentheses (name string , contentSeparator * ContentSeparator ) string {
88
+ return AddCharacters (name , "(" , ")" , contentSeparator )
41
89
}
42
90
43
91
// FormatStatus gets the formatted status
44
- func FormatStatus (status gologgerstatus.Status , separator Separator ) string {
45
- return AddBrackets (status .String (), separator )
92
+ func FormatStatus (status gologgerstatus.Status , contentSeparator * ContentSeparator ) string {
93
+ return AddBrackets (status .String (), contentSeparator )
46
94
}
47
95
48
96
// FormatStringArray returns a string with all the strings in the array formatted
49
- func FormatStringArray (outerSeparator , innerSeparator Separator , stringArray * []string ) string {
97
+ func FormatStringArray (multilineSeparator * MultilineSeparator , stringArray * []string ) string {
50
98
if stringArray == nil || len (* stringArray ) == 0 {
51
99
return ""
52
100
}
53
101
102
+ // Separators
103
+ lineSeparator := multilineSeparator .LineSeparator
104
+ tabSeparator := multilineSeparator .TabSeparator ()
105
+ lineAndTabSeparator := lineSeparator + tabSeparator
106
+
54
107
// Check if there is only one element
55
- midSeparator := string (outerSeparator ) + string (innerSeparator )
56
108
if len (* stringArray ) == 1 {
57
- return AddBrackets ((* stringArray )[0 ], outerSeparator + innerSeparator )
109
+ return AddBrackets (
110
+ (* stringArray )[0 ],
111
+ NewContentSeparator (
112
+ lineAndTabSeparator ,
113
+ lineSeparator ,
114
+ ),
115
+ )
58
116
} else {
59
117
var formattedDetails strings.Builder
60
118
61
119
// Add formatted details
62
- formattedDetails .WriteString (midSeparator )
120
+ formattedDetails .WriteString (string ( tabSeparator ) )
63
121
for i , str := range * stringArray {
64
122
formattedDetails .WriteString (str )
65
123
66
124
if i < len (* stringArray )- 1 {
67
- formattedDetails .WriteString (midSeparator )
125
+ formattedDetails .WriteString (string ( lineAndTabSeparator ) )
68
126
}
69
127
}
70
128
71
- return AddBrackets (formattedDetails .String (), outerSeparator )
129
+ return AddBrackets (formattedDetails .String (), NewRepeatedContentSeparator ( lineSeparator ) )
72
130
}
73
131
}
74
132
@@ -87,7 +145,7 @@ func MapErrorArrayToStringArray(errorArray *[]error) *[]string {
87
145
}
88
146
89
147
// FormatErrorArray returns a string with all the errors in the array formatted
90
- func FormatErrorArray (outerSeparator , innerSeparator Separator , errorArray * []error ) string {
148
+ func FormatErrorArray (multilineSeparator * MultilineSeparator , errorArray * []error ) string {
91
149
mappedErrorArray := MapErrorArrayToStringArray (errorArray )
92
- return FormatStringArray (outerSeparator , innerSeparator , mappedErrorArray )
150
+ return FormatStringArray (multilineSeparator , mappedErrorArray )
93
151
}
0 commit comments