diff options
Diffstat (limited to 'vendor/github.com/go-ini/ini/section.go')
-rw-r--r-- | vendor/github.com/go-ini/ini/section.go | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/vendor/github.com/go-ini/ini/section.go b/vendor/github.com/go-ini/ini/section.go index 45d2f3b..c9fa27e 100644 --- a/vendor/github.com/go-ini/ini/section.go +++ b/vendor/github.com/go-ini/ini/section.go | |||
@@ -68,20 +68,33 @@ func (s *Section) NewKey(name, val string) (*Key, error) { | |||
68 | } | 68 | } |
69 | 69 | ||
70 | if inSlice(name, s.keyList) { | 70 | if inSlice(name, s.keyList) { |
71 | s.keys[name].value = val | 71 | if s.f.options.AllowShadows { |
72 | if err := s.keys[name].addShadow(val); err != nil { | ||
73 | return nil, err | ||
74 | } | ||
75 | } else { | ||
76 | s.keys[name].value = val | ||
77 | } | ||
72 | return s.keys[name], nil | 78 | return s.keys[name], nil |
73 | } | 79 | } |
74 | 80 | ||
75 | s.keyList = append(s.keyList, name) | 81 | s.keyList = append(s.keyList, name) |
76 | s.keys[name] = &Key{ | 82 | s.keys[name] = newKey(s, name, val) |
77 | s: s, | ||
78 | name: name, | ||
79 | value: val, | ||
80 | } | ||
81 | s.keysHash[name] = val | 83 | s.keysHash[name] = val |
82 | return s.keys[name], nil | 84 | return s.keys[name], nil |
83 | } | 85 | } |
84 | 86 | ||
87 | // NewBooleanKey creates a new boolean type key to given section. | ||
88 | func (s *Section) NewBooleanKey(name string) (*Key, error) { | ||
89 | key, err := s.NewKey(name, "true") | ||
90 | if err != nil { | ||
91 | return nil, err | ||
92 | } | ||
93 | |||
94 | key.isBooleanType = true | ||
95 | return key, nil | ||
96 | } | ||
97 | |||
85 | // GetKey returns key in section by given name. | 98 | // GetKey returns key in section by given name. |
86 | func (s *Section) GetKey(name string) (*Key, error) { | 99 | func (s *Section) GetKey(name string) (*Key, error) { |
87 | // FIXME: change to section level lock? | 100 | // FIXME: change to section level lock? |