class Configature::Namespace
Constants
- BOOLEAN_EQUIVALENT
Constants ============================================================¶ ↑
- RECAST_AS
Attributes
config_name[R]
env_name_prefix[R]
namespaces[R]
parameters[R]
Public Class Methods
new(name = nil, env_name_prefix: '', env_suffix: '', extends: nil) { |self| ... }
click to toggle source
Instance Methods =====================================================¶ ↑
# File lib/configature/namespace.rb, line 52 def initialize(name = nil, env_name_prefix: '', env_suffix: '', extends: nil) @name = name&.to_sym @extends = extends @env = extends&.instance_variable_get(:@env) @env_default = extends&.instance_variable_get(:@env_default) @namespaces = extends&.namespaces&.dup || { } @parameters = extends&.parameters&.dup || { } @env_suffix = env_suffix @env_name_prefix = name ? Configature::Support.extend_env_prefix(env_name_prefix, name) : '' @config_name = extends&.config_name || name yield(self) if (block_given?) end
Public Instance Methods
[](name)
click to toggle source
# File lib/configature/namespace.rb, line 118 def [](name) @parameters[name] or @namespaces[name] end
__instantiate(source: nil, env: ENV)
click to toggle source
# File lib/configature/namespace.rb, line 126 def __instantiate(source: nil, env: ENV) if (@env and source) env_key = @env.map { |e| env[e] }.first || @env_default if (@env_suffix) env_key += @env_suffix end source = source[env_key] || source[env_key.to_sym] end self.__instantiate_branch(source: source, env: env) end
__instantiate_branch(source: nil, env: nil)
click to toggle source
# File lib/configature/namespace.rb, line 140 def __instantiate_branch(source: nil, env: nil) Configature::Data.new( @parameters.values.map do |param| name = param[:name] name_s = name.to_s name_sym = name_s.to_sym value = (param[:env] && env && env[param[:env]]) || source && (source[name_s] || source[name_sym]) case (remap = param[:remap]) when Hash, Proc value = remap[value] || value end if (!value.nil? and as = param[:as]) value = as[value] end [ param[:name], value.nil? ? param[:default].call : value ] end.to_h.merge( @namespaces.map do |name, namespace| [ name, namespace.__instantiate_branch( source: source && (source[name] || source[name.to_s]), env: env ) ] end.to_h ) ) end
env(*names, default: 'development')
click to toggle source
# File lib/configature/namespace.rb, line 87 def env(*names, default: 'development') @env = names.map(&:to_s).freeze @env_default = default end
method_missing(name, **options)
click to toggle source
# File lib/configature/namespace.rb, line 122 def method_missing(name, **options) parameter(name, **options) end
namespace(name, env_suffix: '', extends: nil, &block)
click to toggle source
# File lib/configature/namespace.rb, line 67 def namespace(name, env_suffix: '', extends: nil, &block) name = name.to_sym @namespaces[name] = self.class.new( name, env_suffix: env_suffix, extends: extends && self.namespaces[extends], env_name_prefix: @env_name_prefix ).tap do |n| case (block&.arity) when nil nil when 1 block[n] else n.instance_eval(&block) end end end
parameter(parameter_name, default: nil, as: nil, name: nil, env: nil, remap: nil)
click to toggle source
# File lib/configature/namespace.rb, line 92 def parameter(parameter_name, default: nil, as: nil, name: nil, env: nil, remap: nil) name ||= parameter_name as ||= default.is_a?(Array) ? :array : :string case (as) when Class, Symbol as = RECAST_AS[as] end @parameters[name] = { name: name, default: default.is_a?(Proc) ? default : -> { default }, as: as, remap: remap, env: case (env) when false false when nil Configature::Support.extend_env_prefix(@env_name_prefix, name) else env end } end