1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package govaluate
- // sanitizedParameters is a wrapper for Parameters that does sanitization as
- // parameters are accessed.
- type sanitizedParameters struct {
- orig Parameters
- }
- func (p sanitizedParameters) Get(key string) (interface{}, error) {
- value, err := p.orig.Get(key)
- if err != nil {
- return nil, err
- }
- // should be converted to fixed point?
- if isFixedPoint(value) {
- return castFixedPoint(value), nil
- }
- return value, nil
- }
- func isFixedPoint(value interface{}) bool {
- switch value.(type) {
- case uint8:
- return true
- case uint16:
- return true
- case uint32:
- return true
- case uint64:
- return true
- case int8:
- return true
- case int16:
- return true
- case int32:
- return true
- case int64:
- return true
- case int:
- return true
- }
- return false
- }
- func castFixedPoint(value interface{}) float64 {
- switch value.(type) {
- case uint8:
- return float64(value.(uint8))
- case uint16:
- return float64(value.(uint16))
- case uint32:
- return float64(value.(uint32))
- case uint64:
- return float64(value.(uint64))
- case int8:
- return float64(value.(int8))
- case int16:
- return float64(value.(int16))
- case int32:
- return float64(value.(int32))
- case int64:
- return float64(value.(int64))
- case int:
- return float64(value.(int))
- }
- return 0.0
- }
|