diff options
author | Chris Price <chris@puppetlabs.com> | 2012-10-20 23:14:39 -0700 |
---|---|---|
committer | Chris Price <chris@puppetlabs.com> | 2012-10-20 23:14:39 -0700 |
commit | f0d443fed02d870965613dd174793cc1816137a2 (patch) | |
tree | 610b78ab10ae9cf0f495f71f743433ab9f11ea57 /lib/puppet/util/ini_file/section.rb | |
parent | e517148f4a2ab309aeb8413095791b021574b417 (diff) | |
download | puppet-inifile-f0d443fed02d870965613dd174793cc1816137a2.tar.gz puppet-inifile-f0d443fed02d870965613dd174793cc1816137a2.tar.bz2 |
Refactor to clarify implementation of `save`
The `save` method was previously relying on some really
specific implementation details of the `section` class
(when the start/end_line would be nil, etc.). This made
the code a bit hard to follow.
This commit introduces a few utility methods in the
`section` class (`is_new_section?`, `is_global?`), and
refactors the `save` method to use them... this makes
the logic a little easier to follow and should hopefully
make it easier to maintain.
Diffstat (limited to 'lib/puppet/util/ini_file/section.rb')
-rw-r--r-- | lib/puppet/util/ini_file/section.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/puppet/util/ini_file/section.rb b/lib/puppet/util/ini_file/section.rb index c565872..d7ff159 100644 --- a/lib/puppet/util/ini_file/section.rb +++ b/lib/puppet/util/ini_file/section.rb @@ -2,6 +2,15 @@ module Puppet module Util class IniFile class Section + # Some implementation details: + # + # * `name` will be set to the empty string for the 'global' section. + # * there will always be a 'global' section, with a `start_line` of 0, + # but if the file actually begins with a real section header on + # the first line, then the 'global' section will have an + # `end_line` of `nil`. + # * `start_line` and `end_line` will be set to `nil` for a new non-global + # section. def initialize(name, start_line, end_line, settings, indentation) @name = name @start_line = start_line @@ -13,6 +22,16 @@ class IniFile attr_reader :name, :start_line, :end_line, :additional_settings, :indentation + def is_global?() + @name == '' + end + + def is_new_section?() + # a new section (global or named) will always have `end_line` + # set to `nil` + @end_line.nil? + end + def get_value(setting_name) @existing_settings[setting_name] || @additional_settings[setting_name] end |