Sha256: 41fd24b1357addf85e114c699317a3b310539e33ab560b04944b0e5f517549d6

Contents?: true

Size: 1.43 KB

Versions: 11

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

# @api private
# @since 0.20.0
class Qonfig::Commands::Definition::ReDefineOption < Qonfig::Commands::Base
  # @since 0.20.0
  self.inheritable = true

  # @return [Symbol, String]
  #
  # @api private
  # @since 0.20.0
  attr_reader :key

  # @return [Object]
  #
  # @api private
  # @since 0.20.0
  attr_reader :value

  # @return [Proc, NilClass]
  #
  # @api private
  # @since 0.20.0
  attr_reader :nested_data_set_klass

  # @param key [Symbol, String]
  # @param value [Object]
  #
  # @raise [Qonfig::ArgumentError]
  # @raise [Qonfig::CoreMethodIntersectionError]
  #
  # @api private
  # @since 0.20.0
  def initialize(key, value, nested_definitions)
    Qonfig::Settings::KeyGuard.prevent_incomparabilities!(key)

    @key = key
    @value = value
    @nested_data_set_klass = Class.new(Qonfig::DataSet).tap do |data_set|
      data_set.instance_eval(&nested_definitions)
    end if nested_definitions
  end

  # @param data_set [Qonfig::DataSet]
  # @param settings [Qonfig::Settings]
  # @return [void]
  #
  # @api private
  # @since 0.20.0
  def call(data_set, settings)
    if nested_data_set_klass
      nested_settings = nested_data_set_klass.new.settings
      nested_settings.__mutation_callbacks__.add(settings.__mutation_callbacks__)
      settings.__define_setting__(key, nested_settings, with_redefinition: true)
    else
      settings.__define_setting__(key, value, with_redefinition: true)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
qonfig-0.30.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.28.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.27.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.26.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.25.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.24.1 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.24.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.23.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.22.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.21.0 lib/qonfig/commands/definition/re_define_option.rb
qonfig-0.20.0 lib/qonfig/commands/definition/re_define_option.rb