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 0000000000000000000000000000000000000000..960003cca0e6abb95dfe8e7022a7a0b6b0c082f2 --- /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 fbf3c4b0147f2fd0937497d4a2bd22a8ed2d5f10..ca99fceb935884207a6ef29d2386c0d7bde9517e 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 116c230924ea866860d29240e2a2dd55f213da58..59f7d9de2e4a3e0daadafec8fab369de6d84da35 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 9f1fcaeee13bc6d662e3a1dbdf7be4350a2ed203..9fab4dfd01a87277d7ad3a76597b327cac358ff9 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 2c309be9f978cd403b3aa690062b70dec0c762fa..b960082f81b34042abf930aea08a08b90e0e6e2d 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 700f60fed05b2ed6669cfdfb27defdc963402d47..0036c25d10427ebd40f3adb5680ba32bc3a438f5 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