(dec *json.Decoder, decodedToken string)
| 635 | } |
| 636 | |
| 637 | func offsetSingleObject(dec *json.Decoder, decodedToken string) (int64, error) { |
| 638 | for dec.More() { |
| 639 | offset := dec.InputOffset() |
| 640 | tk, err := dec.Token() |
| 641 | if err != nil { |
| 642 | return 0, err |
| 643 | } |
| 644 | key, ok := tk.(string) |
| 645 | if !ok { |
| 646 | return 0, fmt.Errorf("invalid key token %#v: %w", tk, ErrPointer) |
| 647 | } |
| 648 | if key == decodedToken { |
| 649 | return offset, nil |
| 650 | } |
| 651 | |
| 652 | // Consume the associated value. |
| 653 | // Scalars are fully read by a single Token() call; composite values must be drained. |
| 654 | tk, err = dec.Token() |
| 655 | if err != nil { |
| 656 | return 0, err |
| 657 | } |
| 658 | if delim, isDelim := tk.(json.Delim); isDelim { |
| 659 | switch delim { |
| 660 | case '{', '[': |
| 661 | if err = drainSingle(dec); err != nil { |
| 662 | return 0, err |
| 663 | } |
| 664 | } |
| 665 | } |
| 666 | } |
| 667 | |
| 668 | return 0, fmt.Errorf("token reference %q not found: %w", decodedToken, ErrPointer) |
| 669 | } |
| 670 | |
| 671 | func offsetSingleArray(dec *json.Decoder, decodedToken string) (int64, error) { |
| 672 | if decodedToken == dashToken { |
no test coverage detected
searching dependent graphs…