diff --git a/number.go b/number.go new file mode 100644 index 0000000..9df668a --- /dev/null +++ b/number.go @@ -0,0 +1,92 @@ +package validate + +import "errors" + +var ( + ErrTooHigh = errors.New("too high") + ErrTooLow = errors.New("too low") +) + +func Max(n int, exclusive bool) func(int) error { + return func(value int) error { + if exclusive { + if value >= n { + return ErrTooHigh + } + } + if value > n { + return ErrTooHigh + } + return nil + } +} + +func MaxFloat32(n float32, exclusive bool) func(float32) error { + return func(value float32) error { + if exclusive { + if value >= n { + return ErrTooHigh + } + } + if value > n { + return ErrTooHigh + } + return nil + } +} + +func MaxFloat64(n float64, exclusive bool) func(float64) error { + return func(value float64) error { + if exclusive { + if value >= n { + return ErrTooHigh + } + } + if value > n { + return ErrTooHigh + } + return nil + } +} + +func Min(n int, exclusive bool) func(int) error { + return func(value int) error { + if exclusive { + if value <= n { + return ErrTooHigh + } + } + if value < n { + return ErrTooHigh + } + return nil + } +} + +func MinFloat32(n float32, exclusive bool) func(float32) error { + return func(value float32) error { + if exclusive { + if value <= n { + return ErrTooHigh + } + } + if value < n { + return ErrTooHigh + } + return nil + } +} + +func MinFloat64(n float64, exclusive bool) func(float64) error { + return func(value float64) error { + if exclusive { + if value <= n { + return ErrTooHigh + } + } + if value < n { + return ErrTooHigh + } + return nil + } +}