Class: PDK::Config::IniFileSetting

Inherits:
Setting
  • Object
show all
Defined in:
lib/pdk/config/ini_file_setting.rb

Instance Attribute Summary

Attributes inherited from Setting

#namespace, #previous_setting

Instance Method Summary collapse

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.

See Also:

  • Setting.initialize


9
10
11
12
13
# 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

See Also:

  • Setting.validate!


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pdk/config/ini_file_setting.rb', line 18

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
  unless value.is_a?(Hash)
    raise ArgumentError, _('The setting %{key} may only be a String or Integer, not %{class}') % {
      key:  qualified_name,
      class: value.class,
    }
  end
  # 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, _('The setting %{key} may only be a String or Integer, not %{class}') % {
      key:   qualified_name + '.' + child_name,
      class: child_value.class,
    }
  end
end