...
1 package govalidator
2
3 import (
4 "math"
5 )
6
7
8 func Abs(value float64) float64 {
9 return math.Abs(value)
10 }
11
12
13 func Sign(value float64) float64 {
14 if value > 0 {
15 return 1
16 } else if value < 0 {
17 return -1
18 } else {
19 return 0
20 }
21 }
22
23
24 func IsNegative(value float64) bool {
25 return value < 0
26 }
27
28
29 func IsPositive(value float64) bool {
30 return value > 0
31 }
32
33
34 func IsNonNegative(value float64) bool {
35 return value >= 0
36 }
37
38
39 func IsNonPositive(value float64) bool {
40 return value <= 0
41 }
42
43
44 func InRangeInt(value, left, right interface{}) bool {
45 value64, _ := ToInt(value)
46 left64, _ := ToInt(left)
47 right64, _ := ToInt(right)
48 if left64 > right64 {
49 left64, right64 = right64, left64
50 }
51 return value64 >= left64 && value64 <= right64
52 }
53
54
55 func InRangeFloat32(value, left, right float32) bool {
56 if left > right {
57 left, right = right, left
58 }
59 return value >= left && value <= right
60 }
61
62
63 func InRangeFloat64(value, left, right float64) bool {
64 if left > right {
65 left, right = right, left
66 }
67 return value >= left && value <= right
68 }
69
70
71
72
73 func InRange(value interface{}, left interface{}, right interface{}) bool {
74 switch value.(type) {
75 case int:
76 intValue, _ := ToInt(value)
77 intLeft, _ := ToInt(left)
78 intRight, _ := ToInt(right)
79 return InRangeInt(intValue, intLeft, intRight)
80 case float32, float64:
81 intValue, _ := ToFloat(value)
82 intLeft, _ := ToFloat(left)
83 intRight, _ := ToFloat(right)
84 return InRangeFloat64(intValue, intLeft, intRight)
85 case string:
86 return value.(string) >= left.(string) && value.(string) <= right.(string)
87 default:
88 return false
89 }
90 }
91
92
93 func IsWhole(value float64) bool {
94 return math.Remainder(value, 1) == 0
95 }
96
97
98 func IsNatural(value float64) bool {
99 return IsWhole(value) && IsPositive(value)
100 }
101
View as plain text