From d0ae58c0ab4c328ecbfde1215009acd5dcd2eaf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anian=20B=C3=BChler?= <anian.buehler@reutlingen-university.de> Date: Fri, 19 Nov 2021 14:07:40 +0100 Subject: [PATCH] updated itoa-Block --- .../translator/block/cast/CastItoa.java | 21 ++++++++++++++++--- .../com/ardublock/block/ardublock.xml | 3 +++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ardublock/translator/block/cast/CastItoa.java b/src/main/java/com/ardublock/translator/block/cast/CastItoa.java index 09ef7e2..9da5d63 100644 --- a/src/main/java/com/ardublock/translator/block/cast/CastItoa.java +++ b/src/main/java/com/ardublock/translator/block/cast/CastItoa.java @@ -1,12 +1,20 @@ package com.ardublock.translator.block.cast; +import java.util.ResourceBundle; + import com.ardublock.translator.Translator; import com.ardublock.translator.block.TranslatorBlock; +import com.ardublock.translator.block.exception.BlockException; import com.ardublock.translator.block.exception.SocketNullException; import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; +import com.ardublock.translator.block.numbers.ConstantStringBlock; +import com.ardublock.translator.block.numbers.LocalVariableStringBlock; +import com.ardublock.translator.block.numbers.VariableStringBlock; public class CastItoa extends TranslatorBlock { + private static ResourceBundle uiMessageBundle = ResourceBundle.getBundle("com/ardublock/block/ardublock"); + public CastItoa(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) { super(blockId, translator, codePrefix, codeSuffix, label); } @@ -14,10 +22,17 @@ public class CastItoa extends TranslatorBlock @Override public String toCode() throws SocketNullException, SubroutineNotDeclaredException { - TranslatorBlock tb = this.getRequiredTranslatorBlockAtSocket(0); - String intValue = tb.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + TranslatorBlock tb_value = this.getRequiredTranslatorBlockAtSocket(0); + TranslatorBlock tb_buffer = this.getRequiredTranslatorBlockAtSocket(1); + + String intValue = tb_value.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + String charBuffer = tb_buffer.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + + if (!(tb_buffer instanceof VariableStringBlock) && !(tb_buffer instanceof LocalVariableStringBlock) && !(tb_buffer instanceof ConstantStringBlock)) { + throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.string_var_slot")); + } - return "itoa("+ intValue + ")"; + return "itoa("+ intValue + ", " + charBuffer + ", 10)"; } } diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml index 655c86f..116c230 100644 --- a/src/main/resources/com/ardublock/block/ardublock.xml +++ b/src/main/resources/com/ardublock/block/ardublock.xml @@ -1491,6 +1491,9 @@ </description> <BlockConnectors> <BlockConnector connector-type="string" connector-kind="plug" /> + <BlockConnector connector-type="string" connector-kind="socket" > + <DefaultArg genus-name="variable_string" label="buffer" /> + </BlockConnector> <BlockConnector connector-type="number" connector-kind="socket" /> </BlockConnectors> </BlockGenus> -- GitLab