class Qonfig::Commands::Definition::LoadFromENV
@api private @since 0.2.0
Attributes
convert_values[R]
@return [Boolean]
@api private @since 0.2.0
prefix_pattern[R]
@return [Regexp]
@api private @since 0.2.0
trim_pattern[R]
@return [Regexp]
@api private @since 0.2.0
trim_prefix[R]
@return [Boolean]
@api private @since 0.2.0
Public Class Methods
new(convert_values: false, prefix: nil, trim_prefix: false)
click to toggle source
@option convert_values
[Boolean] @opion prefix [NilClass, String, Regexp]
@raise [Qonfig::ArgumentError]
@api private @since 0.2.0
# File lib/qonfig/commands/definition/load_from_env.rb, line 42 def initialize(convert_values: false, prefix: nil, trim_prefix: false) unless convert_values.is_a?(FalseClass) || convert_values.is_a?(TrueClass) raise Qonfig::ArgumentError, ':convert_values option should be a boolean' end unless prefix.is_a?(NilClass) || prefix.is_a?(String) || prefix.is_a?(Regexp) raise Qonfig::ArgumentError, ':prefix option should be a nil / string / regexp' end unless trim_prefix.is_a?(FalseClass) || trim_prefix.is_a?(TrueClass) raise Qonfig::ArgumentError, ':trim_refix options should be a boolean' end @convert_values = convert_values @prefix_pattern = prefix.is_a?(Regexp) ? prefix : /\A#{Regexp.escape(prefix.to_s)}.*\z/m @trim_prefix = trim_prefix # TODO: mb trim_prefix ? @trim_pattern = prefix.is_a?(Regexp) ? prefix : /\A(#{Regexp.escape(prefix.to_s)})/m 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_env.rb, line 69 def call(data_set, settings) env_data = extract_env_data env_based_settings = build_data_set_klass(env_data).new.settings settings.__append_settings__(env_based_settings) end
Private Instance Methods
build_data_set_klass(env_data)
click to toggle source
@param env_data [Hash] @return [Class<Qonfig::DataSet>]
@api private @since 0.2.0
# File lib/qonfig/commands/definition/load_from_env.rb, line 96 def build_data_set_klass(env_data) Qonfig::DataSet::ClassBuilder.build_from_hash(env_data) end
extract_env_data()
click to toggle source
@return [Hash]
@api private @since 0.2.0
# File lib/qonfig/commands/definition/load_from_env.rb, line 81 def extract_env_data ENV.each_with_object({}) do |(key, value), env_data| next unless key.match(prefix_pattern) key = key.sub(trim_pattern, '') if trim_prefix env_data[key] = value end.tap do |env_data| ValueConverter.convert_values!(env_data) if convert_values end end