tpl/math: Refactor Mod with cast

It makes the code smaller
This commit is contained in:
Artem Sidorenko
2017-10-30 18:24:51 +01:00
committed by Bjørn Erik Pedersen
parent 488631fe0a
commit 76dc811c65
2 changed files with 18 additions and 20 deletions

View File

@@ -72,21 +72,10 @@ func (ns *Namespace) Log(a interface{}) (float64, error) {
// Mod returns a % b.
func (ns *Namespace) Mod(a, b interface{}) (int64, error) {
av := reflect.ValueOf(a)
bv := reflect.ValueOf(b)
var ai, bi int64
ai, erra := cast.ToInt64E(a)
bi, errb := cast.ToInt64E(b)
switch av.Kind() {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
ai = av.Int()
default:
return 0, errors.New("Modulo operator can't be used with non integer value")
}
switch bv.Kind() {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
bi = bv.Int()
default:
if erra != nil || errb != nil {
return 0, errors.New("Modulo operator can't be used with non integer value")
}