Better treatment of embedded conversion
This commit is contained in:
parent
4e5e64f0a6
commit
a8b300e57d
|
@ -282,7 +282,7 @@ export class Reader extends ReaderBase<never> {
|
|||
|
||||
export interface AsPreservesOptions<T extends Embeddable> {
|
||||
onGroup?: (g: Positioned<Group>) => Value<T>;
|
||||
onEmbedded?: (v: Value<T>) => Value<T>;
|
||||
onEmbedded?: (e: Positioned<Expr>, walk: (p: Positioned<Expr>) => Value<T>) => Value<T>;
|
||||
error?: (tag: string, position: Position) => Value<T>;
|
||||
}
|
||||
|
||||
|
@ -302,9 +302,8 @@ export function asPreserves<T extends Embeddable>(
|
|||
if (p.item instanceof Punct) {
|
||||
return error('invalid-punctuation', p.position);
|
||||
} else if (p.item instanceof Embedded) {
|
||||
const e = walk({ position: p.position, item: p.item.expr });
|
||||
if (options.onEmbedded) {
|
||||
return options.onEmbedded(e);
|
||||
return options.onEmbedded({ position: p.position, item: p.item.expr }, walk);
|
||||
} else {
|
||||
return error('unexpected-embedded', p.position);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue