sanitizedParameters.go 902 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package govaluate
  2. // sanitizedParameters is a wrapper for Parameters that does sanitization as
  3. // parameters are accessed.
  4. type sanitizedParameters struct {
  5. orig Parameters
  6. }
  7. func (p sanitizedParameters) Get(key string) (interface{}, error) {
  8. value, err := p.orig.Get(key)
  9. if err != nil {
  10. return nil, err
  11. }
  12. return castToFloat64(value), nil
  13. }
  14. func castToFloat64(value interface{}) interface{} {
  15. switch value.(type) {
  16. case uint8:
  17. return float64(value.(uint8))
  18. case uint16:
  19. return float64(value.(uint16))
  20. case uint32:
  21. return float64(value.(uint32))
  22. case uint64:
  23. return float64(value.(uint64))
  24. case int8:
  25. return float64(value.(int8))
  26. case int16:
  27. return float64(value.(int16))
  28. case int32:
  29. return float64(value.(int32))
  30. case int64:
  31. return float64(value.(int64))
  32. case int:
  33. return float64(value.(int))
  34. case float32:
  35. return float64(value.(float32))
  36. }
  37. return value
  38. }