Sha256: b8f455ec11527e583ed528c0a8dcf4168990e890b958c4cfdd8f3aafae4a48dd

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true

require 'active_support/hash_with_indifferent_access'
require 'eac_ruby_utils/require_sub'

module EacRubyUtils
  # Provide a option by constant, method or options object.
  module SettingsProvider
    ::EacRubyUtils.require_sub __FILE__, base: self

    def setting_constant_name(key, fullname = false) # rubocop:disable Style/OptionalBooleanParameter
      setting_value_instance(key).constant_name(fullname)
    end

    def setting_search_order
      %w[settings_object method constant]
    end

    # return [ActiveSupport::HashWithIndifferentAccess]
    def settings_object
      ActiveSupport::HashWithIndifferentAccess.new(
        respond_to?(settings_object_name) ? send(settings_object_name) : {}
      )
    end

    def settings_object_name
      'settings'
    end

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

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

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

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

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

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
eac_ruby_utils-0.124.0 lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.97.2 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.123.0 lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.121.0 lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.120.0 lib/eac_ruby_utils/settings_provider.rb