mirror of
https://github.com/go-ini/ini.git
synced 2026-06-19 21:46:45 +02:00
Retrieve parent keys accessible from a child section (#52)
Retrieve parent keys available to a child section
This commit is contained in:
@@ -59,6 +59,13 @@ func Test_Key(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Convey("Get parent-keys that are available to the child section", func() {
|
||||||
|
parentKeys := cfg.Section("package.sub").ParentKeys()
|
||||||
|
for _, k := range parentKeys {
|
||||||
|
So(k.Name(), ShouldEqual, "CLONE_URL")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
Convey("Get overwrite value", func() {
|
Convey("Get overwrite value", func() {
|
||||||
So(cfg.Section("author").Key("E-MAIL").String(), ShouldEqual, "u@gogs.io")
|
So(cfg.Section("author").Key("E-MAIL").String(), ShouldEqual, "u@gogs.io")
|
||||||
})
|
})
|
||||||
|
|||||||
+20
@@ -139,6 +139,26 @@ func (s *Section) Keys() []*Key {
|
|||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ParentKeys returns list of keys of parent section.
|
||||||
|
func (s * Section) ParentKeys() []*Key {
|
||||||
|
var parentKeys []*Key
|
||||||
|
sname := s.name
|
||||||
|
for {
|
||||||
|
if i := strings.LastIndex(sname, "."); i > -1 {
|
||||||
|
sname = sname[:i]
|
||||||
|
sec, err := s.f.GetSection(sname)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
parentKeys = append(parentKeys, sec.Keys()...)
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return parentKeys
|
||||||
|
}
|
||||||
|
|
||||||
// KeyStrings returns list of key names of section.
|
// KeyStrings returns list of key names of section.
|
||||||
func (s *Section) KeyStrings() []string {
|
func (s *Section) KeyStrings() []string {
|
||||||
list := make([]string, len(s.keyList))
|
list := make([]string, len(s.keyList))
|
||||||
|
|||||||
Reference in New Issue
Block a user