Module: Envy

Defined in:
lib/envy.rb

Class Method Summary collapse

Class Method Details

.namespace(*selectors) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/envy.rb', line 3

def self.namespace(*selectors)

  selectors = [ selectors.to_a ].flatten.map{|s| s.is_a?(String) ? Regexp.new( (s.upcase + "_").gsub(/_{2,}$/,"_")) : s}
  
  added_config = {}


  selectors.each do |selector|
    
    env_config = {}
  
    ENV.select {|k,v| k =~ selector }.to_a.each do |k|
      env_config[ k[0].gsub(selector,'').to_s.downcase.to_sym ] = k[1]
      env_config[ k[0].gsub(selector,'').to_s.to_sym ] = k[1]
    end
    
    constant_name = selector.to_s.split(":")[-1].to_s.gsub(/^[^a-zA-Z0-9]{1,}|[^a-zA-Z0-9]{1,}$/,'').gsub(/[^a-zA-Z0-9_]+/,'').upcase
    
    self.const_set(constant_name, env_config) unless self.const_defined?(constant_name)
    Kernel.const_set(constant_name, env_config) unless Kernel.const_defined?(constant_name)
    
    added_config[constant_name] =  env_config

  end

  added_config

end