Sha256: 89f73aa8c836ec816d33ef6febefa23db4ac842e96931eb7c2e6821bf0dd1322

Contents?: true

Size: 1.29 KB

Versions: 80

Compression:

Stored size: 1.29 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)
      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

80 entries across 80 versions & 2 rubygems

Version Path
eac_tools-0.76.1 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.76.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.75.2 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.119.2 lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.75.1 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.75.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.119.1 lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.74.1 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.74.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.73.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.119.0 lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.72.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.118.1 lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.118.0 lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.70.1 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.70.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.69.1 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_ruby_utils-0.117.1 lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.69.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
eac_tools-0.68.0 sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb