strudel/repl/src/mini.ts
2022-02-06 12:41:20 +01:00

35 lines
733 B
TypeScript

import * as krill from '../krill-parser';
import * as strudel from '../../strudel.mjs';
export function patternifyAST(ast: any): any {
switch (ast.type_) {
case 'pattern':
return strudel.sequence(...ast.source_.map(patternifyAST));
case 'element':
if (typeof ast.source_ !== 'object') {
return ast.source_;
}
return patternifyAST(ast.source_);
}
}
export default (str: string) => patternifyAST(krill.parse(`"${str}"`));
/*
TODO:
export interface Arguments {
alignment: string;
}
export interface ElementStub {
type_: string;
source_: string;
options_?: any;
}
export interface PatternStub {
type_: string; // pattern
arguments_: Arguments;
source_: ElementStub[];
}
*/