From a617b9aed809b53996ebe46e9bf7c03bab86c247 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anian=20B=C3=BChler?=
 <anian.buehler@reutlingen-university.de>
Date: Mon, 6 Dec 2021 10:06:13 +0100
Subject: [PATCH] added log-block

---
 .../translator/block/operators/LogBlock.java  | 26 +++++++++++++++++++
 .../com/ardublock/block/ardublock.properties  |  2 ++
 .../com/ardublock/block/ardublock.xml         |  7 +++++
 .../ardublock/block/ardublock_de.properties   |  2 ++
 .../block/ardublock_en_GB.properties          |  2 ++
 .../ardublock/block/block-mapping.properties  |  1 +
 6 files changed, 40 insertions(+)
 create mode 100644 src/main/java/com/ardublock/translator/block/operators/LogBlock.java

diff --git a/src/main/java/com/ardublock/translator/block/operators/LogBlock.java b/src/main/java/com/ardublock/translator/block/operators/LogBlock.java
new file mode 100644
index 0000000..960003c
--- /dev/null
+++ b/src/main/java/com/ardublock/translator/block/operators/LogBlock.java
@@ -0,0 +1,26 @@
+package com.ardublock.translator.block.operators;
+
+import com.ardublock.translator.Translator;
+import com.ardublock.translator.block.TranslatorBlock;
+import com.ardublock.translator.block.exception.SocketNullException;
+import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
+
+public class LogBlock extends TranslatorBlock
+{
+
+	public LogBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
+	{
+		super(blockId, translator, codePrefix, codeSuffix, label);
+	}
+
+	@Override
+	public String toCode() throws SocketNullException, SubroutineNotDeclaredException
+	{
+		String ret = "log( ";
+		TranslatorBlock translatorBlock = this.getRequiredTranslatorBlockAtSocket(0);
+		ret = ret + translatorBlock.toCode().replaceAll("\\s*_.new\\b\\s*", "");
+		ret = ret + " )";
+		return codePrefix + ret + codeSuffix;
+	}
+	
+}
diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties
index fbf3c4b..ca99fce 100644
--- a/src/main/resources/com/ardublock/block/ardublock.properties
+++ b/src/main/resources/com/ardublock/block/ardublock.properties
@@ -508,6 +508,7 @@ bg.random=random
 bg.random_range=random
 bg.sin=sin
 bg.sqrt=sqrt
+bg.log=log
 bg.subtraction=-
 bg.tan=tan
 
@@ -520,6 +521,7 @@ bg.map_common.description=map value from [0, 1023] to [0, 255]
 bg.map.description=Map value from "from" range to "to" range
 bg.constrain.description=Constrain a number between two values
 bg.random_range.description=Generate random number between min and (max - 1)
+bg.log.description=Natural logarithm
 
 bc.max=max
 bc.min=min
diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml
index 116c230..59f7d9d 100644
--- a/src/main/resources/com/ardublock/block/ardublock.xml
+++ b/src/main/resources/com/ardublock/block/ardublock.xml
@@ -1358,6 +1358,12 @@
 				<BlockConnector connector-type="number" connector-kind="socket" />
 			</BlockConnectors>
 		</BlockGenus>
+		<BlockGenus name="log" kind="function" color="160 32 240" initlabel="bg.log">
+			<BlockConnectors>
+				<BlockConnector connector-type="number" connector-kind="plug" />
+				<BlockConnector connector-type="number" connector-kind="socket" />
+			</BlockConnectors>
+		</BlockGenus>
 		<BlockGenus name="sin" kind="function" color="160 32 240" initlabel="bg.sin">
 			<BlockConnectors>
 				<BlockConnector connector-type="number" connector-kind="plug" />
@@ -3111,6 +3117,7 @@
 				<BlockGenusMember>abs</BlockGenusMember>
 				<BlockGenusMember>pow</BlockGenusMember>
 				<BlockGenusMember>sqrt</BlockGenusMember>
+				<BlockGenusMember>log</BlockGenusMember>
 				
 				<BlockGenusMember>sin</BlockGenusMember>
 				<BlockGenusMember>cos</BlockGenusMember>
diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties
index 9f1fcae..9fab4df 100644
--- a/src/main/resources/com/ardublock/block/ardublock_de.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_de.properties
@@ -505,6 +505,7 @@ bg.random=Zufallszahl
 bg.random_range=Zufallszahl
 bg.sin=sin
 bg.sqrt=Wurzel
+bg.log=log
 bg.subtraction=-
 bg.tan=tan
 
@@ -517,6 +518,7 @@ bg.map_common.description=Ordne die Werte von [0, 1023] zu den Werten von [0, 25
 bg.map.description=Ordne Werte vom Bereich "von" zum Bereich "zu"
 bg.constrain.description=Beschränke eine analoge Zahl auf einen Bereich
 bg.random_range.description=Erzeuge Zufallszahl zwischen "min" und "max-1"
+bg.log.description=Natuerlicher Logarithmus
 
 bc.max=max
 bc.min=min
diff --git a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
index 2c309be..b960082 100644
--- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
@@ -506,6 +506,7 @@ bg.random=random
 bg.random_range=random
 bg.sin=sin
 bg.sqrt=sqrt
+bg.log=log
 bg.subtraction=-
 bg.tan=tan
 
@@ -518,6 +519,7 @@ bg.map_common.description=Ordne die Werte von [0, 1023] zu den Werten von [0, 25
 bg.map.description=Ordne Werte vom Bereich "von" zum Bereich "zu"
 bg.constrain.description=Beschränke eine analoge Zahl auf einen Bereich
 bg.random_range.description=Erzeuge Zufallszahl zwischen "min" und "max-1"
+bg.log.description=Natuerlicher Logarithmus
 
 bc.max=max
 bc.min=min
diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties
index 700f60f..0036c25 100644
--- a/src/main/resources/com/ardublock/block/block-mapping.properties
+++ b/src/main/resources/com/ardublock/block/block-mapping.properties
@@ -157,6 +157,7 @@ max=com.ardublock.translator.block.operators.MaxBlock
 abs=com.ardublock.translator.block.operators.AbsBlock
 pow=com.ardublock.translator.block.operators.PowBlock
 sqrt=com.ardublock.translator.block.operators.SqrtBlock
+log=com.ardublock.translator.block.operators.LogBlock
 sin=com.ardublock.translator.block.operators.SinBlock
 cos=com.ardublock.translator.block.operators.CosBlock
 tan=com.ardublock.translator.block.operators.TanBlock
-- 
GitLab