Files
config/definition/option/params.go
andrey f9a0411192
All checks were successful
Go Action / goaction (push) Successful in 29s
def (#12)
Reviewed-on: #12
2025-12-26 14:55:42 +03:00

126 lines
2.2 KiB
Go

package option
import (
"gitoa.ru/go-4devs/config/param"
)
type key int
const (
paramHidden key = iota + 1
paramDefault
paramDesc
paramRequired
paramSlice
paramBool
paramPos
paramShort
)
func Short(in rune) param.Option {
return func(v param.Params) param.Params {
return param.With(v, paramShort, string(in))
}
}
func ParamShort(fn param.Params) (string, bool) {
data, ok := param.String(fn, paramShort)
return data, ok
}
func HasShort(short string) param.Has {
return func(fn param.Params) bool {
data, ok := param.String(fn, paramShort)
return ok && data == short
}
}
func WithType(in any) param.Option {
return func(v param.Params) param.Params {
out := param.WithType(in)(v)
if _, ok := in.(bool); ok {
return param.With(out, paramBool, ok)
}
return out
}
}
func Position(pos uint64) param.Option {
return func(p param.Params) param.Params {
return param.With(p, paramPos, pos)
}
}
func Hidden(v param.Params) param.Params {
return param.With(v, paramHidden, true)
}
func Required(v param.Params) param.Params {
return param.With(v, paramRequired, true)
}
func Slice(v param.Params) param.Params {
return param.With(v, paramSlice, true)
}
func Default(in any) param.Option {
return func(v param.Params) param.Params {
return param.With(v, paramDefault, in)
}
}
func Description(in string) param.Option {
return func(v param.Params) param.Params {
return param.With(v, paramDesc, in)
}
}
func HasDefaut(fn param.Params) bool {
_, ok := fn.Param(paramDefault)
return ok
}
func DataPosition(fn param.Params) (uint64, bool) {
return param.Uint64(paramPos, fn)
}
func DataDefaut(fn param.Params) (any, bool) {
data, ok := fn.Param(paramDefault)
return data, ok
}
func IsSlice(fn param.Params) bool {
data, ok := param.Bool(paramSlice, fn)
return ok && data
}
func IsBool(fn param.Params) bool {
data, ok := param.Bool(paramBool, fn)
return ok && data
}
func IsHidden(fn param.Params) bool {
data, ok := param.Bool(paramHidden, fn)
return ok && data
}
func IsRequired(fn param.Params) bool {
data, ok := param.Bool(paramRequired, fn)
return ok && data
}
func DataDescription(fn param.Params) string {
data, _ := param.String(fn, paramDesc)
return data
}