forked from couchbaselabs/gojsonsm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.go
45 lines (36 loc) · 806 Bytes
/
utils.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
// Copyright 2018 Couchbase, Inc. All rights reserved.
package gojsonsm
import (
"strings"
)
func reindentString(value string, indent string) string {
return indent + strings.Replace(value, "\n", "\n"+indent, -1)
}
func DeepCopyStringArray(in []string) []string {
if in == nil {
return nil
}
out := make([]string, len(in))
copy(out, in)
return out
}
func StringSplitFirstInst(value, delim string) (ss []string) {
if value == delim {
ss = append(ss, delim)
return
}
ss = strings.SplitAfterN(value, delim, 2)
if len(ss) < 2 || ss[0] == delim {
return
}
if ss[1] == "" && strings.HasSuffix(ss[0], delim) {
ss[0] = strings.TrimSuffix(ss[0], delim)
ss[1] = delim
} else {
ss = append(ss, "")
ss[0] = strings.Trim(ss[0], delim)
ss[2] = ss[1]
ss[1] = delim
}
return
}