Class: KVConfigParser
- Inherits:
-
Object
- Object
- KVConfigParser
- Defined in:
- lib/rack2aws/config.rb
Overview
Class to parse configuration files in the format of “param = value”.
Instance Attribute Summary collapse
-
#config_file ⇒ Object
Returns the value of attribute config_file.
-
#groups ⇒ Object
Returns the value of attribute groups.
-
#params ⇒ Object
Returns the value of attribute params.
Instance Method Summary collapse
-
#[](param) ⇒ Object
This method is a shortcut to accessing the @params variable.
-
#add(param_name, value, override = false) ⇒ Object
Adds an element to the config object.
-
#add_to_group(group, param_name, value) ⇒ Object
Add parameters to a group.
-
#get_groups ⇒ Object
List available sub-groups of the config.
-
#get_params ⇒ Object
This method returns all parameters/groups defined in a config file.
-
#get_value(param) ⇒ Object
This method will provide the value held by the object “@param” where “@param” is actually the name of the param in the config file.
-
#import_config ⇒ Object
Import data from the config to our config object.
-
#initialize(config_file = nil, separator = '=') ⇒ KVConfigParser
constructor
Initialize the class with the path to the ‘config_fil’ The class objects are dynamically generated by the name of the ‘param’ in the config file.
-
#validate_config ⇒ Object
Validate the config file, and contents.
Constructor Details
#initialize(config_file = nil, separator = '=') ⇒ KVConfigParser
Initialize the class with the path to the ‘config_fil’ The class objects are dynamically generated by the name of the ‘param’ in the config file. Therefore, if the config file is ‘param = value’ then the itializer will eval “@param = value”
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rack2aws/config.rb', line 15 def initialize(config_file=nil, separator = '=') @config_file = config_file @params = {} @groups = [] @splitRegex = '\s*' + separator + '\s*' if(self.config_file) self.validate_config() self.import_config() end end |
Instance Attribute Details
#config_file ⇒ Object
Returns the value of attribute config_file.
7 8 9 |
# File 'lib/rack2aws/config.rb', line 7 def config_file @config_file end |
#groups ⇒ Object
Returns the value of attribute groups.
7 8 9 |
# File 'lib/rack2aws/config.rb', line 7 def groups @groups end |
#params ⇒ Object
Returns the value of attribute params.
7 8 9 |
# File 'lib/rack2aws/config.rb', line 7 def params @params end |
Instance Method Details
#[](param) ⇒ Object
This method is a shortcut to accessing the @params variable
96 97 98 |
# File 'lib/rack2aws/config.rb', line 96 def [](param) return self.params[param] end |
#add(param_name, value, override = false) ⇒ Object
Adds an element to the config object
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/rack2aws/config.rb', line 111 def add(param_name, value, override = false) if value.class == Hash if self.params.has_key?(param_name) if self.params[param_name].class == Hash if override self.params[param_name] = value else self.params[param_name].merge!(value) end elsif self.params.has_key?(param_name) if self.params[param_name].class != value.class raise ArgumentError, "#{param_name} already exists, and is of different type!" end end else self.params[param_name] = value end if ! self.groups.include?(param_name) self.groups.push(param_name) end else self.params[param_name] = value end end |
#add_to_group(group, param_name, value) ⇒ Object
Add parameters to a group. Parameters with the same name could be placed in different groups
138 139 140 141 142 143 |
# File 'lib/rack2aws/config.rb', line 138 def add_to_group(group, param_name, value) if ! self.groups.include?(group) self.add(group, {}) end self.params[group][param_name] = value end |
#get_groups ⇒ Object
List available sub-groups of the config.
106 107 108 |
# File 'lib/rack2aws/config.rb', line 106 def get_groups() return self.groups end |
#get_params ⇒ Object
This method returns all parameters/groups defined in a config file.
101 102 103 |
# File 'lib/rack2aws/config.rb', line 101 def get_params() return self.params.keys end |
#get_value(param) ⇒ Object
This method will provide the value held by the object “@param” where “@param” is actually the name of the param in the config file.
DEPRECATED - will be removed in future versions
89 90 91 92 93 |
# File 'lib/rack2aws/config.rb', line 89 def get_value(param) puts "ParseConfig Deprecation Warning: get_value() is deprecated. Use " + \ "config['param'] or config['group']['param'] instead." return self.params[param] end |
#import_config ⇒ Object
Import data from the config to our config object.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/rack2aws/config.rb', line 36 def import_config() # The config is top down.. anything after a [group] gets added as part # of that group until a new [group] is found. group = nil open(self.config_file) { |f| f.each_with_index do |line, i| line.strip! # force_encoding not available in all versions of ruby begin if i.eql? 0 and line.include?("\xef\xbb\xbf".force_encoding("UTF-8")) line.delete!("\xef\xbb\xbf".force_encoding("UTF-8")) end rescue NoMethodError end unless (/^\#/.match(line)) if(/#{@splitRegex}/.match(line)) param, value = line.split(/#{@splitRegex}/, 2) var_name = "#{param}".chomp.strip value = value.chomp.strip new_value = '' if (value) if value =~ /^['"](.*)['"]$/ new_value = $1 else new_value = value end else new_value = '' end if group self.add_to_group(group, var_name, new_value) else self.add(var_name, new_value) end elsif(/^\[(.+)\]$/.match(line).to_a != []) group = /^\[(.+)\]$/.match(line).to_a[1] self.add(group, {}) end end end } end |
#validate_config ⇒ Object
Validate the config file, and contents
28 29 30 31 32 33 |
# File 'lib/rack2aws/config.rb', line 28 def validate_config() unless File.readable?(self.config_file) raise Errno::EACCES, "#{self.config_file} is not readable" end # FIX ME: need to validate contents/structure? end |