[msgformat] Add more mathematical functions

Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
Knut Ahlers 2022-02-10 01:12:57 +01:00
parent 0d9536ee3f
commit 8b8c7601f1
Signed by: luzifer
GPG key ID: 0066F03ED215AD7D
2 changed files with 70 additions and 6 deletions

View file

@ -1,10 +1,22 @@
package numeric
import "github.com/Luzifer/twitch-bot/plugins"
import (
"math"
"github.com/Luzifer/twitch-bot/plugins"
)
func Register(args plugins.RegistrationArguments) error {
args.RegisterTemplateFunction("multiply", plugins.GenericTemplateFunctionGetter(multiply))
args.RegisterTemplateFunction("add", plugins.GenericTemplateFunctionGetter(add))
args.RegisterTemplateFunction("div", plugins.GenericTemplateFunctionGetter(div))
args.RegisterTemplateFunction("mul", plugins.GenericTemplateFunctionGetter(mul))
args.RegisterTemplateFunction("multiply", plugins.GenericTemplateFunctionGetter(mul)) // DEPRECATED
args.RegisterTemplateFunction("pow", plugins.GenericTemplateFunctionGetter(math.Pow))
args.RegisterTemplateFunction("sub", plugins.GenericTemplateFunctionGetter(sub))
return nil
}
func multiply(m1, m2 float64) float64 { return m1 * m2 }
func add(m1, m2 float64) float64 { return m1 + m2 }
func div(m1, m2 float64) float64 { return m1 / m2 }
func mul(m1, m2 float64) float64 { return m1 * m2 }
func sub(m1, m2 float64) float64 { return m1 - m2 }

View file

@ -25,6 +25,19 @@ Examples below are using this syntax in the code block:
< Output from the template
```
#### `add`
Returns float from calculation: `float1 + float2`
Syntax: `add <float1> <float2>`
Example:
```
# {{ printf "%.0f" (add 1 2) }}%
< 3
```
#### `arg`
Takes the message sent to the channel, splits by space and returns the Nth element
@ -104,6 +117,19 @@ Example:
< Luziferus - foobar
```
#### `div`
Returns float from calculation: `float1 / float2`
Syntax: `div <float1> <float2>`
Example:
```
# {{ printf "%.0f" (div 27 9) }}%
< 3
```
#### `fixUsername`
Ensures the username no longer contains the `@` or `#` prefix
@ -171,19 +197,32 @@ Example:
< Last Quote: #32
```
#### `multiply`
#### `mul` (deprecated: `multiply`)
Returns float from calculation: `float1 * float2`
Syntax: `multiply <float1> <float2>`
Syntax: `mul <float1> <float2>`
Example:
```
# {{ printf "%.0f" (multiply 100 (seededRandom "test")) }}%
# {{ printf "%.0f" (mul 100 (seededRandom "test")) }}%
< 35%
```
#### `pow`
Returns float from calculation: `float1 ** float2`
Syntax: `pow <float1> <float2>`
Example:
```
# {{ printf "%.0f" (pow 10 4) }}%
< 10000
```
#### `recentGame`
Returns the last played game name of the specified user (see shoutout example) or the `fallback` if the game could not be fetched. If no fallback was supplied the message will fail and not be sent.
@ -223,6 +262,19 @@ Example:
< Your int this hour: 17%
```
#### `sub`
Returns float from calculation: `float1 - float2`
Syntax: `sub <float1> <float2>`
Example:
```
# {{ printf "%.0f" (sub 10 4) }}%
< 6
```
#### `tag`
Takes the message sent to the channel, returns the value of the tag specified