Retrieve parent keys accessible from a child section (#52)

Retrieve parent keys available to a child section
This commit is contained in:
AT1012
2016-06-01 12:00:29 -07:00
committed by Unknwon
parent 12f418cc7e
commit d291594290
2 changed files with 27 additions and 0 deletions
+7
View File
@@ -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
View File
@@ -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))