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
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

Raises:

  • (ArgumentError)

See Also:

  • Setting.validate!


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