@strudel/transpiler plugin system
This commit is contained in:
parent
6b00837a4d
commit
bc8517ade7
9 changed files with 680 additions and 506 deletions
21
packages/transpiler/plugin-sample.mjs
Normal file
21
packages/transpiler/plugin-sample.mjs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
plugin-sample.mjs - <short description TODO>
|
||||
Copyright (C) 2022 Strudel contributors - see <https://codeberg.org/uzu/strudel/src/branch/main/packages/superdough/superdough.mjs>
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import { withAwait } from './helpers.mjs';
|
||||
|
||||
const bareSample = {
|
||||
walk: (context) => ({
|
||||
enter: function (node, parent, prop, index) {
|
||||
if (!isBareSamplesCall(node, parent)) return;
|
||||
this.replace(withAwait(node));
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
function isBareSamplesCall(node, parent) {
|
||||
return node.type === 'CallExpression' && node.callee.name === 'samples' && parent.type !== 'AwaitExpression';
|
||||
}
|
||||
|
||||
export const sampleTranspilerPlugins = bareSample;
|
||||
Loading…
Add table
Add a link
Reference in a new issue