@@ -9,6 +9,25 @@ import (
99 "github.com/wundergraph/astjson/fastfloat"
1010)
1111
12+ type ParseError struct {
13+ Err error
14+ }
15+
16+ func (p * ParseError ) Error () string {
17+ if p == nil {
18+ return ""
19+ }
20+ return p .Err .Error ()
21+ }
22+
23+ func NewParseError (err error ) * ParseError {
24+ if err == nil {
25+ return nil
26+ }
27+
28+ return & ParseError {Err : err }
29+ }
30+
1231// Parser parses JSON.
1332//
1433// Parser may be re-used for subsequent parsing.
@@ -38,11 +57,11 @@ func (p *Parser) Parse(s string) (*Value, error) {
3857
3958 v , tail , err := parseValue (b2s (p .b ), p .c , 0 )
4059 if err != nil {
41- return nil , fmt .Errorf ("cannot parse JSON: %s; unparsed tail: %q" , err , startEndString (tail ))
60+ return nil , NewParseError ( fmt .Errorf ("cannot parse JSON: %s; unparsed tail: %q" , err , startEndString (tail ) ))
4261 }
4362 tail = skipWS (tail )
4463 if len (tail ) > 0 {
45- return nil , fmt .Errorf ("unexpected tail: %q" , startEndString (tail ))
64+ return nil , NewParseError ( fmt .Errorf ("unexpected tail: %q" , startEndString (tail ) ))
4665 }
4766 return v , nil
4867}
@@ -54,11 +73,11 @@ func (p *Parser) ParseWithoutCache(s string) (*Value, error) {
5473
5574 v , tail , err := parseValue (b2s (p .b ), p .c , 0 )
5675 if err != nil {
57- return nil , fmt .Errorf ("cannot parse JSON: %s; unparsed tail: %q" , err , startEndString (tail ))
76+ return nil , NewParseError ( fmt .Errorf ("cannot parse JSON: %s; unparsed tail: %q" , err , startEndString (tail ) ))
5877 }
5978 tail = skipWS (tail )
6079 if len (tail ) > 0 {
61- return nil , fmt .Errorf ("unexpected tail: %q" , startEndString (tail ))
80+ return nil , NewParseError ( fmt .Errorf ("unexpected tail: %q" , startEndString (tail ) ))
6281 }
6382 return v , nil
6483}
0 commit comments