You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
2.0 KiB
148 lines
2.0 KiB
package value
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
_ ParseValue = Bool(false)
|
|
_ SliceValue = Bools{}
|
|
)
|
|
|
|
func NewBools(in []bool) Slice {
|
|
return Slice{SliceValue: Bools(in)}
|
|
}
|
|
|
|
type Bools []bool
|
|
|
|
func (b Bools) Any() interface{} {
|
|
return b.Bools()
|
|
}
|
|
|
|
func (b Bools) Unmarshal(val interface{}) error {
|
|
v, ok := val.(*[]bool)
|
|
if !ok {
|
|
return fmt.Errorf("%w: expect: *[]bool got: %T", ErrWrongType, val)
|
|
}
|
|
|
|
*v = b
|
|
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Strings() []string {
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Ints() []int {
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Int64s() []int64 {
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Uints() []uint {
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Uint64s() []uint64 {
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Float64s() []float64 {
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Bools() []bool {
|
|
out := make([]bool, len(b))
|
|
copy(out, b)
|
|
|
|
return out
|
|
}
|
|
|
|
func (b Bools) Durations() []time.Duration {
|
|
return nil
|
|
}
|
|
|
|
func (b Bools) Times() []time.Time {
|
|
return nil
|
|
}
|
|
|
|
func NewBool(in bool) Read {
|
|
return Read{ParseValue: Bool(in)}
|
|
}
|
|
|
|
type Bool bool
|
|
|
|
func (b Bool) Unmarshal(val interface{}) error {
|
|
v, ok := val.(*bool)
|
|
if !ok {
|
|
return fmt.Errorf("%w: expect: *bool got: %T", ErrWrongType, val)
|
|
}
|
|
|
|
*v = bool(b)
|
|
|
|
return nil
|
|
}
|
|
|
|
func (b Bool) ParseString() (string, error) {
|
|
return fmt.Sprintf("%v", b), nil
|
|
}
|
|
|
|
func (b Bool) ParseInt() (int, error) {
|
|
if b {
|
|
return 1, nil
|
|
}
|
|
|
|
return 0, nil
|
|
}
|
|
|
|
func (b Bool) ParseInt64() (int64, error) {
|
|
if b {
|
|
return 1, nil
|
|
}
|
|
|
|
return 0, nil
|
|
}
|
|
|
|
func (b Bool) ParseUint() (uint, error) {
|
|
if b {
|
|
return 1, nil
|
|
}
|
|
|
|
return 0, nil
|
|
}
|
|
|
|
func (b Bool) ParseUint64() (uint64, error) {
|
|
if b {
|
|
return 1, nil
|
|
}
|
|
|
|
return 0, nil
|
|
}
|
|
|
|
func (b Bool) ParseFloat64() (float64, error) {
|
|
if b {
|
|
return 1, nil
|
|
}
|
|
|
|
return 0, nil
|
|
}
|
|
|
|
func (b Bool) ParseBool() (bool, error) {
|
|
return bool(b), nil
|
|
}
|
|
|
|
func (b Bool) ParseDuration() (time.Duration, error) {
|
|
return 0, fmt.Errorf("bool to duration:%w", ErrWrongType)
|
|
}
|
|
|
|
func (b Bool) ParseTime() (time.Time, error) {
|
|
return time.Time{}, fmt.Errorf("bool to time:%w", ErrWrongType)
|
|
}
|
|
|
|
func (b Bool) Any() interface{} {
|
|
return bool(b)
|
|
}
|
|
|