| 230 | } |
| 231 | |
| 232 | func (p *Pointer) get(node any, nameProvider NameProvider) (any, reflect.Kind, error) { |
| 233 | if nameProvider == nil { |
| 234 | nameProvider = defaultOptions.provider |
| 235 | } |
| 236 | |
| 237 | kind := reflect.Invalid |
| 238 | |
| 239 | // full document when empty |
| 240 | if len(p.referenceTokens) == 0 { |
| 241 | return node, kind, nil |
| 242 | } |
| 243 | |
| 244 | for _, token := range p.referenceTokens { |
| 245 | decodedToken := Unescape(token) |
| 246 | |
| 247 | r, knd, err := getSingleImpl(node, decodedToken, nameProvider) |
| 248 | if err != nil { |
| 249 | return nil, knd, err |
| 250 | } |
| 251 | node = r |
| 252 | } |
| 253 | |
| 254 | rValue := reflect.ValueOf(node) |
| 255 | kind = rValue.Kind() |
| 256 | |
| 257 | return node, kind, nil |
| 258 | } |
| 259 | |
| 260 | func (p *Pointer) set(node, data any, nameProvider NameProvider) (any, error) { |
| 261 | knd := reflect.ValueOf(node).Kind() |