From be284e22aa150207d464358d6a983a66ff8adab7 Mon Sep 17 00:00:00 2001 From: "matti.bat" <138713607+mattibat@users.noreply.github.com> Date: Mon, 28 Sep 2026 18:59:12 +0200 Subject: [PATCH] Generate valid catch clauses for Python and JavaScript --- packages/struktolab/src/common/code-generator.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/struktolab/src/common/code-generator.js b/packages/struktolab/src/common/code-generator.js index 28a46a8..5e255a1 100644 --- a/packages/struktolab/src/common/code-generator.js +++ b/packages/struktolab/src/common/code-generator.js @@ -118,6 +118,19 @@ function countLoopHeader(text, lang) { } } +/** The catch text is written Java-style, "Exception e". */ +function catchClause(text, lang) { + if (lang === "python") { + const match = /^\s*(\S+)\s+(\w+)\s*$/.exec(text); + return match ? `${match[1]} as ${match[2]}` : text; + } + if (lang === "javascript") { + const match = /(\w+)\s*$/.exec(text); + return match ? match[1] : text; + } + return text; +} + /** * Generate source code from a struktog tree. * @param {Object} tree - The struktog tree (root InsertNode) @@ -242,7 +255,7 @@ function transform(node, level, t, lang) { indent(level) + (t.rightBracket ? t.rightBracket + " " : "") + t.TryCatchNode.between + - text + + catchClause(text, lang) + t.TryCatchNode.post + (t.leftBracket ? " " + t.leftBracket + "\n" : ""), );