-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathbool.go
49 lines (41 loc) · 1.09 KB
/
bool.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package gates
var (
True = Bool(true)
False = Bool(false)
)
type Bool bool
func (Bool) IsString() bool { return false }
func (Bool) IsInt() bool { return false }
func (Bool) IsFloat() bool { return false }
func (Bool) IsBool() bool { return true }
func (Bool) IsFunction() bool { return false }
func (b Bool) ToString() string {
if bool(b) {
return "true"
}
return "false"
}
func (b Bool) ToInt() int64 {
if bool(b) {
return 1
}
return 0
}
func (b Bool) ToFloat() float64 { return float64(b.ToInt()) }
func (b Bool) ToNumber() Number { return Int(b.ToInt()) }
func (b Bool) ToBool() bool { return bool(b) }
func (b Bool) ToFunction() Function { return _EmptyFunction }
func (b Bool) ToNative(...ToNativeOption) interface{} { return b.ToBool() }
func (b Bool) Equals(other Value) bool {
if other.IsBool() {
return b.SameAs(other)
}
return other.Equals(Int(b.ToInt()))
}
func (b Bool) SameAs(bv Value) bool {
bb, ok := bv.(Bool)
if !ok {
return false
}
return bool(bb) == bool(b)
}