| 123456789101112131415161718192021222324252627282930313233343536 |
- package iter
- import (
- "context"
- "github.com/lestrrat-go/iter/mapiter"
- "github.com/pkg/errors"
- )
- // MapVisitor is a specialized visitor for our purposes.
- // Whereas mapiter.Visitor supports any type of key, this
- // visitor assumes the key is a string
- type MapVisitor interface {
- Visit(string, interface{}) error
- }
- type MapVisitorFunc func(string, interface{}) error
- func (fn MapVisitorFunc) Visit(s string, v interface{}) error {
- return fn(s, v)
- }
- func WalkMap(ctx context.Context, src mapiter.Source, visitor MapVisitor) error {
- return mapiter.Walk(ctx, src, mapiter.VisitorFunc(func(k, v interface{}) error {
- //nolint:forcetypeassert
- return visitor.Visit(k.(string), v)
- }))
- }
- func AsMap(ctx context.Context, src mapiter.Source) (map[string]interface{}, error) {
- var m map[string]interface{}
- if err := mapiter.AsMap(ctx, src, &m); err != nil {
- return nil, errors.Wrap(err, `mapiter.AsMap failed`)
- }
- return m, nil
- }
|