Module: Chamber::Environmentable

Included in:
Filters::EnvironmentFilter
Defined in:
lib/chamber/environmentable.rb

Constant Summary collapse

SECURE_KEY_TOKEN =
/\A_secure_/

Instance Method Summary collapse

Instance Method Details

#with_environment(settings, parent_keys, hash_block, value_block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/chamber/environmentable.rb', line 7

def with_environment(settings, parent_keys, hash_block, value_block)
  environment_hash = Hashie::Mash.new

  settings.each_pair do |key, value|
    environment_key  = key.to_s.gsub(SECURE_KEY_TOKEN, '')
    environment_keys = parent_keys.dup.push(environment_key)

    if value.respond_to? :each_pair
      environment_hash.merge!(hash_block.call(key, value, environment_keys))
    else
      environment_key = environment_keys.join('_').upcase

      environment_hash.merge!(value_block.call(key, value, environment_key))
    end
  end

  environment_hash
end