@webwriter/block-based-code
Version:
Write block-based code (e.g. Scratch) and run it.
27 lines (24 loc) • 1.22 kB
text/typescript
import { Order } from "blockly/javascript";
import type { GeneratorFunction } from "../types/generator";
export const generators = {
variables_get: (block, generator) => {
const variableName = generator.getVariableName(block.getFieldValue("VAR"));
return [`await getVariable(${generator.quote_(variableName)})`, Order.ATOMIC];
},
variables_set: (block, generator) => {
const variableName = generator.getVariableName(block.getFieldValue("VAR"));
const value = generator.valueToCode(block, "VALUE", Order.ASSIGNMENT);
return `setVariable(${generator.quote_(variableName)}, ${value});\n`;
},
} satisfies Record<"variables_get" | "variables_set", GeneratorFunction>;
export const readableGenerators = {
variables_get: (block, generator) => {
const variableName = generator.getVariableName(block.getFieldValue("VAR"));
return [variableName, Order.ATOMIC];
},
variables_set: (block, generator) => {
const variableName = generator.getVariableName(block.getFieldValue("VAR"));
const value = generator.valueToCode(block, "VALUE", Order.ASSIGNMENT);
return `${variableName} = ${value};\n`;
},
} satisfies Record<"variables_get" | "variables_set", GeneratorFunction>;