Skip to content

Commit 15ca0ac

Browse files
alepane21jensneuse
andauthored
feat: add ParseError (#7)
Co-authored-by: Jens Neuse <[email protected]>
1 parent 8afac53 commit 15ca0ac

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

parser.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)