Files
console/setting/setting.go
andrey 1382bea590
All checks were successful
Go Action / goaction (pull_request) Successful in 2m26s
update commands
2026-01-06 16:19:45 +03:00

58 lines
792 B
Go

package setting
//nolint:gochecknoglobals
var eparam = empty{}
func New(opts ...Option) Setting {
var param Setting
param = eparam
for _, opt := range opts {
param = opt(param)
}
return param
}
type Setting interface {
Param(key any) (any, bool)
With(key, val any) Setting
}
type Option func(Setting) Setting
type empty struct{}
func (e empty) Param(any) (any, bool) {
return nil, false
}
func (e empty) With(key, val any) Setting {
return data{
parent: e,
key: key,
val: val,
}
}
type data struct {
parent Setting
key, val any
}
func (d data) Param(key any) (any, bool) {
if d.key == key {
return d.val, true
}
return d.parent.Param(key)
}
func (d data) With(key, val any) Setting {
return data{
parent: d,
key: key,
val: val,
}
}