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