diff --git a/src/array.go b/src/array.go index 761bba7..be1caae 100644 --- a/src/array.go +++ b/src/array.go @@ -589,6 +589,14 @@ func ArArray(arr []any) ArObject { return false, ArErr{} }, } + val.obj["__Boolean__"] = builtinFunc{ + "__Boolean__", + func(args ...any) (any, ArErr) { + return len( + arr, + ) > 0, ArErr{} + }, + } return val } diff --git a/src/map.go b/src/map.go index b1cb488..470ea74 100644 --- a/src/map.go +++ b/src/map.go @@ -318,5 +318,17 @@ func Map(m anymap) ArObject { return keys, ArErr{} }, } + obj.obj["__Boolean__"] = builtinFunc{ + "__Boolean__", + func(args ...any) (any, ArErr) { + mutex.RLock() + if len(m) == 0 { + mutex.RUnlock() + return false, ArErr{} + } + mutex.RUnlock() + return true, ArErr{} + }, + } return obj } diff --git a/src/operations.go b/src/operations.go index 759c90d..af5ac1c 100644 --- a/src/operations.go +++ b/src/operations.go @@ -626,7 +626,7 @@ func calcOr(o operationType, stack stack, stacklevel int) (any, ArErr) { return resp, ArErr{} } resp, err = runVal( - o.value1, + o.value2, stack, stacklevel+1, ) diff --git a/src/string.go b/src/string.go index e6c173b..b129b37 100644 --- a/src/string.go +++ b/src/string.go @@ -639,5 +639,10 @@ func ArString(str string) ArObject { } return ArArray(output), ArErr{} }} + obj.obj["__Boolean__"] = builtinFunc{ + "__Boolean__", + func(a ...any) (any, ArErr) { + return len(str) > 0, ArErr{} + }} return obj }