From ba14e95d50445a2312ffe8f12244db724465609a Mon Sep 17 00:00:00 2001 From: Username404 Date: Sat, 19 Mar 2022 12:40:14 +0100 Subject: [PATCH] Add a separate_transpileTree overload and transpile function parameters correctly Signed-off-by: Username404 --- src/headers/transpiler/Target.hpp | 10 +++++++--- src/headers/transpiler/implementations/Js.hpp | 2 +- src/headers/transpiler/implementations/Lua.hpp | 2 +- src/headers/transpiler/implementations/Py.hpp | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/headers/transpiler/Target.hpp b/src/headers/transpiler/Target.hpp index eb758e9..8620fdf 100644 --- a/src/headers/transpiler/Target.hpp +++ b/src/headers/transpiler/Target.hpp @@ -106,9 +106,13 @@ protected: IS(ParseTree) void separate_transpileTree(const T& parseTree, const unsigned short& indentationLevel = 0) { transpileTree(parseTree, indentationLevel, [this, &parseTree](const auto& iterator){ - if (iterator + 1 != parseTree.cend()) { - output << separator; - } + if (iterator + 1 != parseTree.cend()) { output << separator; } + }); + } + IS(ParseTree) + void separate_transpileTree(const T& parseTree, const string_view separation_characters) { + transpileTree(parseTree, 0, [this, &parseTree, &separation_characters](const auto& iterator){ + if (iterator + 1 != parseTree.cend()) { output << separation_characters; } }); } typedef optional optional_string; diff --git a/src/headers/transpiler/implementations/Js.hpp b/src/headers/transpiler/implementations/Js.hpp index 9c0da05..7c11394 100644 --- a/src/headers/transpiler/implementations/Js.hpp +++ b/src/headers/transpiler/implementations/Js.hpp @@ -13,7 +13,7 @@ struct JsTarget: Target { make_task(types::String, stringInterpolation(parseComponent.content);), make_task(Function, output << "function " << parseComponent.name << '('; - transpileTree(parseComponent.parameters); + separate_transpileTree(parseComponent.parameters, ", "); output << ") {"; if (newLines) output << separator << indentation; separate_transpileTree(parseComponent, 1); diff --git a/src/headers/transpiler/implementations/Lua.hpp b/src/headers/transpiler/implementations/Lua.hpp index bfdc7f4..421e944 100644 --- a/src/headers/transpiler/implementations/Lua.hpp +++ b/src/headers/transpiler/implementations/Lua.hpp @@ -17,7 +17,7 @@ struct LuaTarget: Target { make_task(types::String, stringInterpolation(parseComponent.content, "[[", "]]", "..");), make_task(Function, output << "function " << parseComponent.name << '('; - transpileTree(parseComponent.parameters); + separate_transpileTree(parseComponent.parameters, ", "); output << ')' << separator; if (newLines) output << indentation; separate_transpileTree(parseComponent, 1); diff --git a/src/headers/transpiler/implementations/Py.hpp b/src/headers/transpiler/implementations/Py.hpp index 8a71409..2e58832 100644 --- a/src/headers/transpiler/implementations/Py.hpp +++ b/src/headers/transpiler/implementations/Py.hpp @@ -11,7 +11,7 @@ struct PyTarget: Target { make_task(types::String, stringInterpolation(R"(""")", parseComponent.content);), make_task(Function, output << "def " << parseComponent.name << '('; - transpileTree(parseComponent.parameters); + separate_transpileTree(parseComponent.parameters, ", "); output << "):" << separator << indentation; separate_transpileTree(parseComponent, 1); ),