(value any, p tree.Path)
| 71 | } |
| 72 | |
| 73 | func (r *relativePathsResolver) resolveRelativePaths(value any, p tree.Path) (any, error) { |
| 74 | for pattern, resolver := range r.resolvers { |
| 75 | if p.Matches(pattern) { |
| 76 | return resolver(value) |
| 77 | } |
| 78 | } |
| 79 | switch v := value.(type) { |
| 80 | case map[string]any: |
| 81 | for k, e := range v { |
| 82 | resolved, err := r.resolveRelativePaths(e, p.Next(k)) |
| 83 | if err != nil { |
| 84 | return nil, err |
| 85 | } |
| 86 | v[k] = resolved |
| 87 | } |
| 88 | case []any: |
| 89 | for i, e := range v { |
| 90 | resolved, err := r.resolveRelativePaths(e, p.Next("[]")) |
| 91 | if err != nil { |
| 92 | return nil, err |
| 93 | } |
| 94 | v[i] = resolved |
| 95 | } |
| 96 | } |
| 97 | return value, nil |
| 98 | } |
| 99 | |
| 100 | func (r *relativePathsResolver) absPath(value any) (any, error) { |
| 101 | switch v := value.(type) { |
no test coverage detected