@@ -4,26 +4,35 @@ import Grammar from '../grammar.js';
44import jsonPointerCallback from './callbacks/json-pointer.js' ;
55import referenceTokenCallback from './callbacks/reference-token.js' ;
66import referenceTokenListEvaluator from './evaluators/reference-token-list.js' ;
7+ import JSONPointerParseError from '../errors/JSONPointerParseError.js' ;
78
89const grammar = new Grammar ( ) ;
910
1011const parse = ( jsonPointer , { evaluator = referenceTokenListEvaluator } = { } ) => {
11- const parser = new Parser ( ) ;
12+ if ( typeof jsonPointer !== 'string' ) {
13+ throw new JSONPointerParseError ( 'JSON Pointer must be a string' ) ;
14+ }
1215
13- parser . ast = new AST ( ) ;
14- parser . ast . callbacks [ 'json-pointer' ] = jsonPointerCallback ;
15- parser . ast . callbacks [ 'reference-token' ] = referenceTokenCallback ;
16+ try {
17+ const parser = new Parser ( ) ;
1618
17- const { ast } = parser ;
18- const result = parser . parse ( grammar , 'json-pointer' , jsonPointer ) ;
19+ parser . ast = new AST ( ) ;
20+ parser . ast . callbacks [ 'json-pointer' ] = jsonPointerCallback ;
21+ parser . ast . callbacks [ 'reference-token' ] = referenceTokenCallback ;
1922
20- if ( ! result . success ) {
21- return { result, ast, computed : null } ;
22- }
23+ const { ast } = parser ;
24+ const result = parser . parse ( grammar , 'json-pointer' , jsonPointer ) ;
2325
24- const computed = evaluator ( ast , { result } ) ;
26+ if ( ! result . success ) {
27+ return { result, ast, computed : null } ;
28+ }
2529
26- return { result, ast, computed } ;
30+ const computed = evaluator ( ast , { result } ) ;
31+
32+ return { result, ast, computed } ;
33+ } catch ( error ) {
34+ throw new JSONPointerParseError ( 'Unknown error during JSON Pointer parsing' , { cause : error } ) ;
35+ }
2736} ;
2837
2938export default parse ;
0 commit comments