mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-12 22:28:37 +00:00
21 lines
630 B
JavaScript
21 lines
630 B
JavaScript
import * as krill from "../_snowpack/link/repl/krill-parser.js";
|
|
import * as strudel from "../_snowpack/link/strudel.js";
|
|
const {sequence, silence} = strudel;
|
|
export function patternifyAST(ast) {
|
|
switch (ast.type_) {
|
|
case "pattern":
|
|
return sequence(...ast.source_.map(patternifyAST));
|
|
case "element":
|
|
if (ast.source_ === "~") {
|
|
return silence;
|
|
}
|
|
if (typeof ast.source_ !== "object") {
|
|
return ast.source_;
|
|
}
|
|
return patternifyAST(ast.source_);
|
|
}
|
|
}
|
|
export default (...strings) => {
|
|
return sequence(...strings.map((str) => patternifyAST(krill.parse(`"${str}"`))));
|
|
};
|