Skip to content

Commit fa32b2d

Browse files
committed
Simplify python generation
1 parent 504948e commit fa32b2d

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

src/blocks/mrc_steps.ts

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -161,33 +161,28 @@ export const pythonFromBlock = function (
161161
block: StepsBlock,
162162
generator: ExtendedPythonGenerator,
163163
) {
164+
let code = 'def steps(self):\n';
165+
code += generator.INDENT + 'if not self._initialized_steps:\n';
166+
code += generator.INDENT.repeat(2) + 'self._current_step = "' + block.mrcStepNames[0] + '"\n';
167+
code += generator.INDENT.repeat(2) + 'self.initialized_steps = True\n\n';
168+
code += generator.INDENT + 'if self._current_step == None:\n';
169+
code += generator.INDENT.repeat(2) + 'return\n';
164170

165-
let code = 'def initialize_steps(self):\n';
166-
code += generator.INDENT + 'self.step_from_name = {}\n';
167-
code += generator.INDENT + 'self.name_from_step = {}\n';
168-
block.mrcStepNames.forEach((stepName, index) => {
169-
code += generator.INDENT + `self.step_from_name['${stepName}'] = ${index}\n`;
170-
code += generator.INDENT + `self.name_from_step[${index}] = '${stepName}'\n`;
171-
});
172-
173-
code += generator.INDENT + 'self.current_step_index = 0\n';
174-
code += generator.INDENT + 'self.initialized = True\n';
175171

176-
generator.addClassMethodDefinition('initialize_steps', code);
177-
178-
code = 'def steps(self):\n';
179-
code += generator.INDENT + 'if not self.initialized:\n';
180-
code += generator.INDENT.repeat(2) + 'self.initialize_steps()\n\n';
181-
code += generator.INDENT + 'match self.current_step_index:\n';
172+
code += generator.INDENT + 'match self._current_step:\n';
182173
block.mrcStepNames.forEach((stepName, index) => {
183-
code += generator.INDENT.repeat(2) + `case ${index}: # ${stepName}\n`;
174+
code += generator.INDENT.repeat(2) + `case "${stepName}":\n`;
184175
let stepCode = generator.statementToCode(block, 'STEP_' + index);
185176
if (stepCode !== '') {
186177
code += generator.prefixLines(stepCode, generator.INDENT.repeat(2));
187178
}
188179
let conditionCode = generator.valueToCode(block, 'CONDITION_' + index, Order.NONE) || 'False';
189180
code += generator.INDENT.repeat(3) + 'if ' + conditionCode + ':\n';
190-
code += generator.INDENT.repeat(4) + 'self.current_step_index += 1\n';
181+
if (index === block.mrcStepNames.length - 1) {
182+
code += generator.INDENT.repeat(4) + 'self._current_step = None\n';
183+
} else {
184+
code += generator.INDENT.repeat(4) + 'self._current_step = "' + block.mrcStepNames[index + 1] + '"\n';
185+
}
191186
});
192187

193188
generator.addClassMethodDefinition('steps', code);

0 commit comments

Comments
 (0)