@@ -4,26 +4,26 @@ package serverHandler
44
55type prefixFilter func (whole , prefix string ) bool
66
7- // pathInts
7+ // pathValues
88
9- type pathInts struct {
9+ type pathValues [ T any ] struct {
1010 path string
11- values []int
11+ values []T
1212}
1313
14- type pathIntsList [] pathInts
14+ type pathValuesList [ T any ] [] pathValues [ T ]
1515
16- func (list pathIntsList ) mergePrefixMatched (mergeWith []int , matchPrefix prefixFilter , refPath string ) []int {
17- var result []int
16+ func (list pathValuesList [ T ] ) mergePrefixMatched (mergeWith []T , matchPrefix prefixFilter , refPath string ) []T {
17+ var result []T
1818 if mergeWith != nil {
19- result = make ([]int , len (mergeWith ))
19+ result = make ([]T , len (mergeWith ))
2020 copy (result , mergeWith )
2121 }
2222
2323 for i := range list {
2424 if matchPrefix (refPath , list [i ].path ) {
2525 if result == nil {
26- result = []int {}
26+ result = []T {}
2727 }
2828 result = append (result , list [i ].values ... )
2929 }
@@ -36,8 +36,8 @@ func (list pathIntsList) mergePrefixMatched(mergeWith []int, matchPrefix prefixF
3636 }
3737}
3838
39- func (list pathIntsList ) filterSuccessor (includeSelf bool , matchPrefix prefixFilter , refPath string ) pathIntsList {
40- var result pathIntsList
39+ func (list pathValuesList [ T ] ) filterSuccessor (includeSelf bool , matchPrefix prefixFilter , refPath string ) pathValuesList [ T ] {
40+ var result pathValuesList [ T ]
4141
4242 for i := range list {
4343 if ! includeSelf && len (list [i ].path ) == len (refPath ) {
@@ -55,107 +55,20 @@ func (list pathIntsList) filterSuccessor(includeSelf bool, matchPrefix prefixFil
5555 }
5656}
5757
58- // pathStrings
59-
60- type pathStrings struct {
61- path string
62- values []string
63- }
64-
65- type pathStringsList []pathStrings
66-
67- func (list pathStringsList ) mergePrefixMatched (mergeWith []string , matchPrefix prefixFilter , refPath string ) []string {
68- var result []string
69- if mergeWith != nil {
70- result = make ([]string , len (mergeWith ))
71- copy (result , mergeWith )
72- }
58+ // pathInts
7359
74- for i := range list {
75- if matchPrefix (refPath , list [i ].path ) {
76- if result == nil {
77- result = []string {}
78- }
79- result = append (result , list [i ].values ... )
80- }
81- }
60+ type pathInts = pathValues [int ]
61+ type pathIntsList = pathValuesList [int ]
8262
83- if mergeWith != nil && len (mergeWith ) == len (result ) {
84- return mergeWith
85- } else {
86- return result
87- }
88- }
89-
90- func (list pathStringsList ) filterSuccessor (includeSelf bool , matchPrefix prefixFilter , refPath string ) pathStringsList {
91- var result pathStringsList
63+ // pathStrings
9264
93- for i := range list {
94- if ! includeSelf && len (list [i ].path ) == len (refPath ) {
95- continue
96- }
97- if matchPrefix (list [i ].path , refPath ) {
98- result = append (result , list [i ])
99- }
100- }
101-
102- if len (list ) == len (result ) {
103- return list
104- } else {
105- return result
106- }
107- }
65+ type pathStrings = pathValues [string ]
66+ type pathStringsList = pathValuesList [string ]
10867
10968// pathHeaders
11069
111- type pathHeaders struct {
112- path string
113- values [][2 ]string
114- }
115-
116- type pathHeadersList []pathHeaders
117-
118- func (list pathHeadersList ) mergePrefixMatched (mergeWith [][2 ]string , matchPrefix prefixFilter , refPath string ) [][2 ]string {
119- var result [][2 ]string
120- if mergeWith != nil {
121- result = make ([][2 ]string , len (mergeWith ))
122- copy (result , mergeWith )
123- }
124-
125- for i := range list {
126- if matchPrefix (refPath , list [i ].path ) {
127- if result == nil {
128- result = [][2 ]string {}
129- }
130- result = append (result , list [i ].values ... )
131- }
132- }
133-
134- if mergeWith != nil && len (mergeWith ) == len (result ) {
135- return mergeWith
136- } else {
137- return result
138- }
139- }
140-
141- func (list pathHeadersList ) filterSuccessor (includeSelf bool , matchPrefix prefixFilter , refPath string ) pathHeadersList {
142- var result pathHeadersList
143-
144- for i := range list {
145- if ! includeSelf && len (list [i ].path ) == len (refPath ) {
146- continue
147- }
148- if matchPrefix (list [i ].path , refPath ) {
149- result = append (result , list [i ])
150- }
151- }
152-
153- if len (list ) == len (result ) {
154- return list
155- } else {
156- return result
157- }
158- }
70+ type pathHeaders = pathValues [[2 ]string ]
71+ type pathHeadersList = pathValuesList [[2 ]string ]
15972
16073// []string
16174
0 commit comments