// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com).
// All rights reserved.

// bool.go
package boolean

func IsBool(v any) (ok bool) {
	_, ok = v.(bool)
	return ok
}

// func (b *bool) EqualTo(other kern.Equaler) (equal bool) {
// 	if otherBool, ok := other.(*bool); ok {
// 		equal = b == otherBool
// 	}
// 	return
// }

func ToBool(v any) (b bool, ok bool) {
	ok = true
	switch x := v.(type) {
	case string:
		b = len(x) > 0
	case float64:
		b = x != 0.0
	case int64:
		b = x != 0
	case bool:
		b = x
	default:
		ok = false
	}
	return
}
