module EacRubyUtils::SettingsProvider

def setting_constant_name(key, fullname = false)

def setting_constant_name(key, fullname = false)
  setting_value_instance(key).constant_name(fullname)
end

def setting_search_order

def setting_search_order
  %w[settings_object method constant]
end

def setting_value(key, options = {})

def setting_value(key, options = {})
  setting_value_instance(key, options).value
end

def setting_value_by_constant(key)

def setting_value_by_constant(key)
  setting_value_instance(key).value_by_constant
end

def setting_value_by_method(key)

def setting_value_by_method(key)
  setting_value_instance(key).value_by_method
end

def setting_value_by_settings_object(key)

def setting_value_by_settings_object(key)
  setting_value_instance(key).value_by_settings_object
end

def setting_value_instance(key, options = {})

def setting_value_instance(key, options = {})
  ::EacRubyUtils::SettingsProvider::SettingValue.new(self, key, options)
end

def settings_object

def settings_object
  respond_to?(settings_object_name) ? send(settings_object_name) : {}
end

def settings_object_name

def settings_object_name
  'settings'
end