mirror of
https://github.com/go-ini/ini.git
synced 2026-06-19 21:46:45 +02:00
@@ -37,7 +37,7 @@ const (
|
|||||||
|
|
||||||
// Maximum allowed depth when recursively substituing variable names.
|
// Maximum allowed depth when recursively substituing variable names.
|
||||||
_DEPTH_VALUES = 99
|
_DEPTH_VALUES = 99
|
||||||
_VERSION = "1.26.0"
|
_VERSION = "1.27.0"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Version returns current package version literal.
|
// Version returns current package version literal.
|
||||||
@@ -321,6 +321,11 @@ func (f *File) Sections() []*Section {
|
|||||||
return sections
|
return sections
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ChildSections returns a list of child sections of given section name.
|
||||||
|
func (f *File) ChildSections(name string) []*Section {
|
||||||
|
return f.Section(name).ChildSections()
|
||||||
|
}
|
||||||
|
|
||||||
// SectionStrings returns list of section names.
|
// SectionStrings returns list of section names.
|
||||||
func (f *File) SectionStrings() []string {
|
func (f *File) SectionStrings() []string {
|
||||||
list := make([]string, len(f.sectionList))
|
list := make([]string, len(f.sectionList))
|
||||||
|
|||||||
+25
@@ -241,6 +241,31 @@ key5
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_File_ChildSections(t *testing.T) {
|
||||||
|
Convey("Find child sections by parent name", t, func() {
|
||||||
|
cfg, err := Load([]byte(`
|
||||||
|
[node]
|
||||||
|
|
||||||
|
[node.biz1]
|
||||||
|
|
||||||
|
[node.biz2]
|
||||||
|
|
||||||
|
[node.biz3]
|
||||||
|
|
||||||
|
[node.bizN]
|
||||||
|
`))
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
So(cfg, ShouldNotBeNil)
|
||||||
|
|
||||||
|
children := cfg.ChildSections("node")
|
||||||
|
names := make([]string, len(children))
|
||||||
|
for i := range children {
|
||||||
|
names[i] = children[i].name
|
||||||
|
}
|
||||||
|
So(strings.Join(names, ","), ShouldEqual, "node.biz1,node.biz2,node.biz3,node.bizN")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func Test_LooseLoad(t *testing.T) {
|
func Test_LooseLoad(t *testing.T) {
|
||||||
Convey("Loose load from data sources", t, func() {
|
Convey("Loose load from data sources", t, func() {
|
||||||
Convey("Loose load mixed with nonexistent file", func() {
|
Convey("Loose load mixed with nonexistent file", func() {
|
||||||
|
|||||||
+14
@@ -232,3 +232,17 @@ func (s *Section) DeleteKey(name string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ChildSections returns a list of child sections of current section.
|
||||||
|
// For example, "[parent.child1]" and "[parent.child12]" are child sections
|
||||||
|
// of section "[parent]".
|
||||||
|
func (s *Section) ChildSections() []*Section {
|
||||||
|
prefix := s.name + "."
|
||||||
|
children := make([]*Section, 0, 3)
|
||||||
|
for _, name := range s.f.sectionList {
|
||||||
|
if strings.HasPrefix(name, prefix) {
|
||||||
|
children = append(children, s.f.sections[name])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return children
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user