class Qonfig::Commands::Definition::ExposeSelf
@api private @since 0.14.0
Attributes
caller_location[R]
@return [String]
@api private @since 0.14.0
env[R]
@return [Symbol, String]
@api private @since 0.14.0
format[R]
@return [String, Symbol]
@api private @since 0.15.0
Public Class Methods
new(caller_location, env:, format:)
click to toggle source
@param caller_location
[String] @option env [String, Symbol] @option format [String, Symbol]
@api private @since 0.14.0
# File lib/qonfig/commands/definition/expose_self.rb, line 33 def initialize(caller_location, env:, format:) unless env.is_a?(Symbol) || env.is_a?(String) raise Qonfig::ArgumentError, ':env should be a string or a symbol' end raise Qonfig::ArgumentError, ':env should be provided' if env.to_s.empty? 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 @env = env @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.14.0
# File lib/qonfig/commands/definition/expose_self.rb, line 55 def call(data_set, settings) self_placed_data = load_self_placed_end_data env_based_data_slice = self_placed_data[env] || self_placed_data[env.to_s] || self_placed_data[env.to_sym] raise( Qonfig::ExposeError, "#{file_path} file does not contain settings with <#{env}> environment key!" ) unless env_based_data_slice raise( Qonfig::IncompatibleEndDataStructureError, '__END__-data content must be a hash-like structure' ) unless env_based_data_slice.is_a?(Hash) self_placed_settings = build_data_set_klass(env_based_data_slice).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.14.0
# File lib/qonfig/commands/definition/expose_self.rb, line 100 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::IncompatibleEndDataStructureError]
@api private @since 0.14.0
# File lib/qonfig/commands/definition/expose_self.rb, line 83 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