}
if inSlice(name, s.keyList) {
- s.keys[name].value = val
+ if s.f.options.AllowShadows {
+ if err := s.keys[name].addShadow(val); err != nil {
+ return nil, err
+ }
+ } else {
+ s.keys[name].value = val
+ }
return s.keys[name], nil
}
s.keyList = append(s.keyList, name)
- s.keys[name] = &Key{
- s: s,
- name: name,
- value: val,
- }
+ s.keys[name] = newKey(s, name, val)
s.keysHash[name] = val
return s.keys[name], nil
}
+// NewBooleanKey creates a new boolean type key to given section.
+func (s *Section) NewBooleanKey(name string) (*Key, error) {
+ key, err := s.NewKey(name, "true")
+ if err != nil {
+ return nil, err
+ }
+
+ key.isBooleanType = true
+ return key, nil
+}
+
// GetKey returns key in section by given name.
func (s *Section) GetKey(name string) (*Key, error) {
// FIXME: change to section level lock?