class Qonfig::Commands::Definition::LoadFromSelf

@api private @since 0.2.0

Attributes

caller_location[R]

@return [String]

@api private @since 0.2.0

format[R]

@return [String, Symbol]

@api private @since 0.15.0

Public Class Methods

new(caller_location, format:) click to toggle source

@param caller_location [String] @option format [String, Symbol]

@api private @since 0.2.0

# File lib/qonfig/commands/definition/load_from_self.rb, line 26
def initialize(caller_location, format:)
  unless format.is_a?(String) || format.is_a?(Symbol)
    raise Qonfig::ArgumentError, 'Format should be a symbol or a string'
  end

  @caller_location = caller_location
  @format = format.tap { Qonfig::Loaders.resolve(format) }
end

Public Instance Methods

call(data_set, settings) click to toggle source

@param data_set [Qonfig::DataSet] @param settings [Qonfig::Settings] @return [void]

@api private @since 0.2.0

# File lib/qonfig/commands/definition/load_from_self.rb, line 41
def call(data_set, settings)
  self_placed_end_data = load_self_placed_end_data
  self_placed_settings = build_data_set_klass(self_placed_end_data).new.settings

  settings.__append_settings__(self_placed_settings)
end

Private Instance Methods

build_data_set_klass(self_placed_settings) click to toggle source

@param self_placed_settings [Hash] @return [Class<Qonfig::DataSet>]

@api private @since 0.2.0

# File lib/qonfig/commands/definition/load_from_self.rb, line 74
def build_data_set_klass(self_placed_settings)
  Qonfig::DataSet::ClassBuilder.build_from_hash(self_placed_settings)
end
load_self_placed_end_data() click to toggle source

@return [Hash]

@raise [Qonfig::SelfDataNotFound] @raise [Qonfig::IncompatibleYAMLStructureError]

@api private @since 0.2.0

# File lib/qonfig/commands/definition/load_from_self.rb, line 57
def load_self_placed_end_data
  end_data      = Qonfig::Loaders::EndData.extract(caller_location)
  settings_data = Qonfig::Loaders.resolve(format).load(end_data)

  raise(
    Qonfig::IncompatibleEndDataStructureError,
    '__END__-data must be a hash-like structure'
  ) unless settings_data.is_a?(Hash)

  settings_data
end