feat: added urlenc.FnArray.
This commit is contained in:
parent
2b31a6a970
commit
22a222d945
2 changed files with 44 additions and 0 deletions
|
@ -69,3 +69,27 @@ func Join(builders ...Builder) Values {
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type FnArray[V any] struct {
|
||||||
|
Values []V
|
||||||
|
Fn func([]V, int) (string, string)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a FnArray[V]) BuildQueryValues() Values {
|
||||||
|
values := Values{}
|
||||||
|
for i := range a.Values {
|
||||||
|
k, v := a.Fn(a.Values, i)
|
||||||
|
values.Add(k, v)
|
||||||
|
}
|
||||||
|
return values
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a FnArray[V]) String() string {
|
||||||
|
unesc, err := url.QueryUnescape(
|
||||||
|
a.BuildQueryValues().Encode(),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return unesc
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package urlenc
|
||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
import "log"
|
import "log"
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
func TestArray(t *testing.T) {
|
func TestArray(t *testing.T) {
|
||||||
log.Printf(
|
log.Printf(
|
||||||
|
@ -25,3 +26,22 @@ func TestJoin(t *testing.T) {
|
||||||
).Encode(),
|
).Encode(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFnArray(t *testing.T) {
|
||||||
|
log.Printf(
|
||||||
|
"FnArray{...}: %s",
|
||||||
|
FnArray[int64]{
|
||||||
|
[]int64{
|
||||||
|
1, 2, 3, 11, 12, 13,
|
||||||
|
},
|
||||||
|
func(
|
||||||
|
a []int64, i int,
|
||||||
|
) (string, string) {
|
||||||
|
return fmt.Sprintf(
|
||||||
|
"custom_field_%d_value_changed",
|
||||||
|
a[i],
|
||||||
|
), ""
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue