update definition group

This commit is contained in:
2025-12-29 17:59:28 +03:00
parent 3aa8a30f3f
commit 360ee322f2
3 changed files with 45 additions and 5 deletions

View File

@@ -16,7 +16,7 @@ type Execute func(w io.Writer, vi view.View, rnd Rendering) error
var randders = map[reflect.Type]Execute{
reflect.TypeFor[*definition.Definition](): Template(defTpl),
reflect.TypeFor[group.Group](): Template(groupTpl),
reflect.TypeFor[*group.Group](): Template(groupTpl),
reflect.TypeFor[option.Option](): Template(optTpl),
reflect.TypeFor[proto.Proto](): Template(protoTpl),
}

View File

@@ -8,14 +8,14 @@ import (
var _ config.Group = New("", "")
func New(name, desc string, opts ...config.Option) Group {
func New(name, desc string, opts ...config.Option) *Group {
group := Group{
name: name,
opts: opts,
Params: param.New(option.Description(desc)),
}
return group
return &group
}
type Group struct {
@@ -25,10 +25,21 @@ type Group struct {
opts []config.Option
}
func (g Group) Name() string {
func (g *Group) Name() string {
return g.name
}
func (g Group) Options() []config.Option {
func (g *Group) Options() []config.Option {
return g.opts
}
func (g *Group) Add(opts ...config.Option) {
g.opts = append(g.opts, opts...)
}
func (g *Group) With(opts ...param.Option) *Group {
group := New(g.Name(), "")
group.Params = param.Chain(g.Params, param.New(opts...))
return group
}

View File

@@ -0,0 +1,29 @@
package group_test
import (
"testing"
"gitoa.ru/go-4devs/config/definition/group"
"gitoa.ru/go-4devs/config/definition/option"
"gitoa.ru/go-4devs/config/test/require"
)
func TestGroupAdd(t *testing.T) {
t.Parallel()
var gr group.Group
gr.Add(group.New("test", "test"))
require.Truef(t, len(gr.Options()) == 1, "len(%v) != 1", len(gr.Options()))
}
func TestGroupWith(t *testing.T) {
t.Parallel()
const descrition = "group description"
gr := group.New("test", "test desc")
gr = gr.With(option.Description(descrition))
require.Equal(t, descrition, option.DataDescription(gr))
}