@@ -7,34 +7,40 @@ export type NodeCreator<T extends Node> = (
77 opts : NodeParserOption ,
88) => T [ ] ;
99
10+ type NodeParserCreatorOptions = {
11+ parseOnNested : boolean ;
12+ parseOnQuoted : boolean ;
13+ patterns : RegExp [ ] ;
14+ } ;
15+
1016type NodeParserCreator < T extends Node > = (
1117 nodeCreator : NodeCreator < T > ,
12- opts : { parseOnNested : boolean ; parseOnQuoted : boolean ; patterns : RegExp [ ] } ,
18+ opts : NodeParserCreatorOptions ,
1319) => NodeParser ;
1420
1521export const createNodeParser : NodeParserCreator < Node > = (
1622 nodeCreator ,
1723 { parseOnNested, parseOnQuoted, patterns } ,
1824) => {
1925 return ( text , opts , next ) => {
20- if ( ! parseOnNested && opts . nested ) return next ?. ( ) ?? [ ] ;
21- if ( ! parseOnQuoted && opts . quoted ) return next ?. ( ) ?? [ ] ;
26+ if ( ! parseOnNested && opts . nested ) return next ( ) ;
27+ if ( ! parseOnQuoted && opts . quoted ) return next ( ) ;
2228
2329 for ( const pattern of patterns ) {
2430 const match = pattern . exec ( text ) ;
2531 if ( match === null ) continue ;
2632
2733 const left = text . substring ( 0 , match . index ) ;
28- const right = text . substring ( match . index + ( match [ 0 ] ? .length ?? 0 ) ) ;
34+ const right = text . substring ( match . index + match [ 0 ] . length ) ;
2935
30- const node = nodeCreator ( match [ 0 ] ?? "" , opts ) ;
36+ const node = nodeCreator ( match [ 0 ] , opts ) ;
3137 return [
3238 ...convertToNodes ( left , opts ) ,
3339 ...node ,
3440 ...convertToNodes ( right , opts ) ,
3541 ] ;
3642 }
3743
38- return next ?. ( ) ?? [ ] ;
44+ return next ( ) ;
3945 } ;
4046} ;
0 commit comments