Skip to content

Commit 9369ad2

Browse files
committed
refactor(util): use static binding for platform-dependent path compare funcs
1 parent 13ea387 commit 9369ad2

File tree

5 files changed

+58
-63
lines changed

5 files changed

+58
-63
lines changed

src/util/path.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package util
22

33
import (
44
"path"
5-
"path/filepath"
65
"strings"
76
)
87

@@ -19,22 +18,6 @@ func CleanUrlPath(urlPath string) string {
1918
return urlPath
2019
}
2120

22-
func HasUrlPrefixDirAccurate(urlPath, prefix string) bool {
23-
return hasPrefixDirAccurate(urlPath, prefix, '/')
24-
}
25-
26-
func HasUrlPrefixDirNoCase(urlPath, prefix string) bool {
27-
return hasPrefixDirNoCase(urlPath, prefix, '/')
28-
}
29-
30-
func HasFsPrefixDirAccurate(fsPath, prefix string) bool {
31-
return hasPrefixDirAccurate(fsPath, prefix, filepath.Separator)
32-
}
33-
34-
func HasFsPrefixDirNoCase(fsPath, prefix string) bool {
35-
return hasPrefixDirNoCase(fsPath, prefix, filepath.Separator)
36-
}
37-
3821
func hasPrefixDirAccurate(absPath, prefix string, separator byte) bool {
3922
if absPath == prefix {
4023
return true

src/util/path_test.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,184 +2,184 @@ package util
22

33
import "testing"
44

5-
func TestHasUrlPrefixDir(t *testing.T) {
5+
func TestHasPrefixDirAccurate(t *testing.T) {
66
var full, prefix string
77

88
full = "/hello"
99
prefix = "/"
10-
if !HasUrlPrefixDirAccurate(full, prefix) {
10+
if !hasPrefixDirAccurate(full, prefix, '/') {
1111
t.Error(full, prefix)
1212
}
1313

1414
full = "/a/b/c"
1515
prefix = "/a/b"
16-
if !HasUrlPrefixDirAccurate(full, prefix) {
16+
if !hasPrefixDirAccurate(full, prefix, '/') {
1717
t.Error(full, prefix)
1818
}
1919

2020
full = "/a/b/c"
2121
prefix = "/a/b/"
22-
if !HasUrlPrefixDirAccurate(full, prefix) {
22+
if !hasPrefixDirAccurate(full, prefix, '/') {
2323
t.Error(full, prefix)
2424
}
2525

2626
full = "/a/b/c"
2727
prefix = "/a/b/c"
28-
if !HasUrlPrefixDirAccurate(full, prefix) {
28+
if !hasPrefixDirAccurate(full, prefix, '/') {
2929
t.Error(full, prefix)
3030
}
3131

3232
full = "/a/b/c"
3333
prefix = "/a/e"
34-
if HasUrlPrefixDirAccurate(full, prefix) {
34+
if hasPrefixDirAccurate(full, prefix, '/') {
3535
t.Error(full, prefix)
3636
}
3737

3838
full = "/a/b/c"
3939
prefix = "/a/e/"
40-
if HasUrlPrefixDirAccurate(full, prefix) {
40+
if hasPrefixDirAccurate(full, prefix, '/') {
4141
t.Error(full, prefix)
4242
}
4343

4444
full = "/a/b/cd"
4545
prefix = "/a/b/c"
46-
if HasUrlPrefixDirAccurate(full, prefix) {
46+
if hasPrefixDirAccurate(full, prefix, '/') {
4747
t.Error(full, prefix)
4848
}
4949

5050
full = "/a/b/c"
5151
prefix = "/a/b/c/"
52-
if !HasUrlPrefixDirAccurate(full, prefix) {
52+
if !hasPrefixDirAccurate(full, prefix, '/') {
5353
t.Error(full, prefix)
5454
}
5555

5656
full = "/a/b/c"
5757
prefix = "/a/b/d"
58-
if HasUrlPrefixDirAccurate(full, prefix) {
58+
if hasPrefixDirAccurate(full, prefix, '/') {
5959
t.Error(full, prefix)
6060
}
6161

6262
full = "/a/b/c"
6363
prefix = "/a/b/de"
64-
if HasUrlPrefixDirAccurate(full, prefix) {
64+
if hasPrefixDirAccurate(full, prefix, '/') {
6565
t.Error(full, prefix)
6666
}
6767
}
6868

69-
func TestHasUrlPrefixDirNoCase(t *testing.T) {
69+
func TestHasPrefixDirNoCase(t *testing.T) {
7070
var full, prefix string
7171

7272
full = "/hello"
7373
prefix = "/"
74-
if !HasUrlPrefixDirNoCase(full, prefix) {
74+
if !hasPrefixDirNoCase(full, prefix, '/') {
7575
t.Error(full, prefix)
7676
}
7777

7878
full = "/a/b/c"
7979
prefix = "/a/b"
80-
if !HasUrlPrefixDirNoCase(full, prefix) {
80+
if !hasPrefixDirNoCase(full, prefix, '/') {
8181
t.Error(full, prefix)
8282
}
8383

8484
full = "/a/b/c"
8585
prefix = "/A/b"
86-
if !HasUrlPrefixDirNoCase(full, prefix) {
86+
if !hasPrefixDirNoCase(full, prefix, '/') {
8787
t.Error(full, prefix)
8888
}
8989

9090
full = "/a/b/c"
9191
prefix = "/a/b/"
92-
if !HasUrlPrefixDirNoCase(full, prefix) {
92+
if !hasPrefixDirNoCase(full, prefix, '/') {
9393
t.Error(full, prefix)
9494
}
9595

9696
full = "/a/b/c"
9797
prefix = "/a/B/"
98-
if !HasUrlPrefixDirNoCase(full, prefix) {
98+
if !hasPrefixDirNoCase(full, prefix, '/') {
9999
t.Error(full, prefix)
100100
}
101101

102102
full = "/a/b/c"
103103
prefix = "/a/b/c"
104-
if !HasUrlPrefixDirNoCase(full, prefix) {
104+
if !hasPrefixDirNoCase(full, prefix, '/') {
105105
t.Error(full, prefix)
106106
}
107107

108108
full = "/a/b/c"
109109
prefix = "/a/b/C"
110-
if !HasUrlPrefixDirNoCase(full, prefix) {
110+
if !hasPrefixDirNoCase(full, prefix, '/') {
111111
t.Error(full, prefix)
112112
}
113113

114114
full = "/a/b/c"
115115
prefix = "/a/e"
116-
if HasUrlPrefixDirNoCase(full, prefix) {
116+
if hasPrefixDirNoCase(full, prefix, '/') {
117117
t.Error(full, prefix)
118118
}
119119

120120
full = "/a/b/c"
121121
prefix = "/A/e"
122-
if HasUrlPrefixDirNoCase(full, prefix) {
122+
if hasPrefixDirNoCase(full, prefix, '/') {
123123
t.Error(full, prefix)
124124
}
125125

126126
full = "/a/b/c"
127127
prefix = "/a/e/"
128-
if HasUrlPrefixDirNoCase(full, prefix) {
128+
if hasPrefixDirNoCase(full, prefix, '/') {
129129
t.Error(full, prefix)
130130
}
131131

132132
full = "/a/b/c"
133133
prefix = "/A/E/"
134-
if HasUrlPrefixDirNoCase(full, prefix) {
134+
if hasPrefixDirNoCase(full, prefix, '/') {
135135
t.Error(full, prefix)
136136
}
137137

138138
full = "/a/b/cd"
139139
prefix = "/a/b/c"
140-
if HasUrlPrefixDirNoCase(full, prefix) {
140+
if hasPrefixDirNoCase(full, prefix, '/') {
141141
t.Error(full, prefix)
142142
}
143143

144144
full = "/a/b/cd"
145145
prefix = "/a/b/C"
146-
if HasUrlPrefixDirNoCase(full, prefix) {
146+
if hasPrefixDirNoCase(full, prefix, '/') {
147147
t.Error(full, prefix)
148148
}
149149

150150
full = "/a/b/c"
151151
prefix = "/a/b/c/"
152-
if !HasUrlPrefixDirNoCase(full, prefix) {
152+
if !hasPrefixDirNoCase(full, prefix, '/') {
153153
t.Error(full, prefix)
154154
}
155155

156156
full = "/a/b/c"
157157
prefix = "/A/b/C/"
158-
if !HasUrlPrefixDirNoCase(full, prefix) {
158+
if !hasPrefixDirNoCase(full, prefix, '/') {
159159
t.Error(full, prefix)
160160
}
161161

162162
full = "/a/b/c"
163163
prefix = "/a/b/d"
164-
if HasUrlPrefixDirNoCase(full, prefix) {
164+
if hasPrefixDirNoCase(full, prefix, '/') {
165165
t.Error(full, prefix)
166166
}
167167

168168
full = "/a/b/c"
169169
prefix = "/a/B/d"
170-
if HasUrlPrefixDirNoCase(full, prefix) {
170+
if hasPrefixDirNoCase(full, prefix, '/') {
171171
t.Error(full, prefix)
172172
}
173173

174174
full = "/a/b/c"
175175
prefix = "/a/b/de"
176-
if HasUrlPrefixDirNoCase(full, prefix) {
176+
if hasPrefixDirNoCase(full, prefix, '/') {
177177
t.Error(full, prefix)
178178
}
179179

180180
full = "/a/b/c"
181181
prefix = "/a/B/DE"
182-
if HasUrlPrefixDirNoCase(full, prefix) {
182+
if hasPrefixDirNoCase(full, prefix, '/') {
183183
t.Error(full, prefix)
184184
}
185185
}

src/util/path_unix.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@
33

44
package util
55

6-
var IsPathEqual = IsStrEqualAccurate
6+
import "path/filepath"
77

8-
var HasUrlPrefixDir = HasUrlPrefixDirAccurate
9-
var HasFsPrefixDir = HasFsPrefixDirAccurate
8+
func IsPathEqual(a, b string) bool {
9+
return a == b
10+
}
11+
12+
func HasUrlPrefixDir(urlPath, prefix string) bool {
13+
return hasPrefixDirAccurate(urlPath, prefix, '/')
14+
}
15+
16+
func HasFsPrefixDir(fsPath, prefix string) bool {
17+
return hasPrefixDirAccurate(fsPath, prefix, filepath.Separator)
18+
}

src/util/path_windows.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,19 @@
33

44
package util
55

6-
var IsPathEqual = IsStrEqualNoCase
6+
import (
7+
"path/filepath"
8+
"strings"
9+
)
710

8-
var HasUrlPrefixDir = HasUrlPrefixDirNoCase
9-
var HasFsPrefixDir = HasFsPrefixDirNoCase
11+
func IsPathEqual(a, b string) bool {
12+
return strings.EqualFold(a, b)
13+
}
14+
15+
func HasUrlPrefixDir(urlPath, prefix string) bool {
16+
return hasPrefixDirNoCase(urlPath, prefix, '/')
17+
}
18+
19+
func HasFsPrefixDir(fsPath, prefix string) bool {
20+
return hasPrefixDirNoCase(fsPath, prefix, filepath.Separator)
21+
}

src/util/str.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,12 @@
11
package util
22

33
import (
4-
"strings"
54
"unicode"
65
"unicode/utf8"
76
)
87

98
type StrEqualFunc func(a, b string) bool
109

11-
func IsStrEqualAccurate(a, b string) bool {
12-
return a == b
13-
}
14-
15-
func IsStrEqualNoCase(a, b string) bool {
16-
return strings.EqualFold(a, b)
17-
}
18-
1910
func InPlaceDedup(inputs []string) []string {
2011
if len(inputs) <= 1 {
2112
return inputs

0 commit comments

Comments
 (0)