Skip to content

Commit

Permalink
Revert ":necktie: up: reflects,math - update the int value convert ha…
Browse files Browse the repository at this point in the history
…ndle and add more tests"

This reverts commit ba4db05.
  • Loading branch information
XiaoK29 committed Jun 30, 2023
1 parent d96052c commit e1966d6
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 223 deletions.
93 changes: 22 additions & 71 deletions mathutil/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package mathutil
import (
"encoding/json"
"fmt"
"math"
"strconv"
"strings"
"time"
Expand All @@ -20,12 +19,6 @@ func Int(in any) (int, error) {
return ToInt(in)
}

// SafeInt convert value to int, will ignore error
func SafeInt(in any) int {
val, _ := ToInt(in)
return val
}

// QuietInt convert value to int, will ignore error
func QuietInt(in any) int {
val, _ := ToInt(in)
Expand All @@ -34,10 +27,7 @@ func QuietInt(in any) int {

// MustInt convert value to int, will panic on error
func MustInt(in any) int {
val, err := ToInt(in)
if err != nil {
panic(err)
}
val, _ := ToInt(in)
return val
}

Expand Down Expand Up @@ -69,54 +59,29 @@ func ToInt(in any) (iVal int, err error) {
case int32:
iVal = int(tVal)
case int64:
if tVal > math.MaxInt32 {
err = fmt.Errorf("value overflow int32. input: %v", tVal)
} else {
iVal = int(tVal)
}
iVal = int(tVal)
case uint:
if tVal > math.MaxInt32 {
err = fmt.Errorf("value overflow int32. input: %v", tVal)
} else {
iVal = int(tVal)
}
iVal = int(tVal)
case uint8:
iVal = int(tVal)
case uint16:
iVal = int(tVal)
case uint32:
if tVal > math.MaxInt32 {
err = fmt.Errorf("value overflow int32. input: %v", tVal)
} else {
iVal = int(tVal)
}
iVal = int(tVal)
case uint64:
if tVal > math.MaxInt32 {
err = fmt.Errorf("value overflow int32. input: %v", tVal)
} else {
iVal = int(tVal)
}
iVal = int(tVal)
case float32:
iVal = int(tVal)
case float64:
iVal = int(tVal)
case time.Duration:
if tVal > math.MaxInt32 {
err = fmt.Errorf("value overflow int32. input: %v", tVal)
} else {
iVal = int(tVal)
}
iVal = int(tVal)
case string:
iVal, err = strconv.Atoi(strings.TrimSpace(tVal))
case json.Number:
var i64 int64
if i64, err = tVal.Int64(); err == nil {
if i64 > math.MaxInt32 {
err = fmt.Errorf("value overflow int32. input: %v", tVal)
} else {
iVal = int(i64)
}
}
i64, err = tVal.Int64()
iVal = int(i64)
default:
err = comdef.ErrConvType
}
Expand All @@ -138,12 +103,6 @@ func Uint(in any) (uint64, error) {
return ToUint(in)
}

// SafeUint convert string to uint, will ignore error
func SafeUint(in any) uint64 {
val, _ := ToUint(in)
return val
}

// QuietUint convert string to uint, will ignore error
func QuietUint(in any) uint64 {
val, _ := ToUint(in)
Expand All @@ -152,10 +111,7 @@ func QuietUint(in any) uint64 {

// MustUint convert string to uint, will panic on error
func MustUint(in any) uint64 {
val, err := ToUint(in)
if err != nil {
panic(err)
}
val, _ := ToUint(in)
return val
}

Expand Down Expand Up @@ -202,11 +158,6 @@ func ToUint(in any) (u64 uint64, err error) {
case string:
u64, err = strconv.ParseUint(strings.TrimSpace(tVal), 10, 0)
default:
// if iface, ok := in.(comdef.Int64able); ok {
// var i64 int64
// i64, err = iface.Int64()
// u64 = uint64(i64)
// } else {
err = comdef.ErrConvType
}
return
Expand Down Expand Up @@ -235,14 +186,11 @@ func QuietInt64(in any) int64 {

// MustInt64 convert value to int64, will panic on error
func MustInt64(in any) int64 {
i64, err := ToInt64(in)
if err != nil {
panic(err)
}
i64, _ := ToInt64(in)
return i64
}

// TODO AsInt64 strict convert to int64
// TODO StrictInt64,AsInt64 strict convert to int64

// Int64OrErr convert string to int64, return error on failed
func Int64OrErr(in any) (int64, error) {
Expand Down Expand Up @@ -309,12 +257,9 @@ func FloatOrPanic(in any) float64 {
return val
}

// MustFloat convert value to float64, will panic on error
// MustFloat convert value to float64 TODO will panic on error
func MustFloat(in any) float64 {
val, err := ToFloat(in)
if err != nil {
panic(err)
}
val, _ := ToFloat(in)
return val
}

Expand Down Expand Up @@ -383,13 +328,19 @@ func StringOrPanic(val any) string {
}

// MustString convert intX/floatX value to string, will panic on error
func MustString(val any) string { return StringOrPanic(val) }
func MustString(val any) string {
return StringOrPanic(val)
}

// ToString convert intX/floatX value to string, return error on failed
func ToString(val any) (string, error) { return TryToString(val, true) }
func ToString(val any) (string, error) {
return TryToString(val, true)
}

// StringOrErr convert intX/floatX value to string, return error on failed
func StringOrErr(val any) (string, error) { return TryToString(val, true) }
func StringOrErr(val any) (string, error) {
return TryToString(val, true)
}

// QuietString convert intX/floatX value to string, other type convert by fmt.Sprint
func QuietString(val any) string {
Expand Down
Loading

0 comments on commit e1966d6

Please sign in to comment.