Class: PDK::Config::IniFileSetting
- Defined in:
- lib/pdk/config/ini_file_setting.rb
Instance Attribute Summary
Attributes inherited from Setting
Instance Method Summary collapse
-
#initialize(_name, namespace, initial_value = nil) ⇒ IniFileSetting
constructor
Initialises the PDK::Config::JSONSchemaSetting object.
-
#validate!(value) ⇒ Object
Verifies that the new setting value is valid in an Ini File.
Methods inherited from Setting
#default, #default_to, #qualified_name, #to_s, #validate, #value, #value=
Constructor Details
#initialize(_name, namespace, initial_value = nil) ⇒ IniFileSetting
Initialises the PDK::Config::JSONSchemaSetting object.
9 10 11 12 13 14 |
# File 'lib/pdk/config/ini_file_setting.rb', line 9 def initialize(_name, namespace, initial_value = nil) raise 'The IniFileSetting object can only be created within the IniFile Namespace' unless namespace.is_a?(PDK::Config::IniFile) super validate!(initial_value) unless initial_value.nil? end |
Instance Method Details
#validate!(value) ⇒ Object
Verifies that the new setting value is valid in an Ini File
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/pdk/config/ini_file_setting.rb', line 19 def validate!(value) # We're very restrictive here. Realistically Ini files only have string types return if value.nil? || value.is_a?(String) || value.is_a?(Integer) # The only other valid-ish type is a Hash raise ArgumentError, format('The setting %{key} may only be a String or Integer, not %{class}', key: qualified_name, class: value.class) unless value.is_a?(Hash) # Any hashes can only have a single String/Integer value value.each do |child_name, child_value| next if child_value.nil? || child_value.is_a?(String) || child_value.is_a?(Integer) raise ArgumentError, format('The setting %{key} may only be a String or Integer, not %{class}', key: "#{qualified_name}.#{child_name}", class: child_value.class) end end |