Module: Inquisitive::Environment::Parser
- Defined in:
- lib/inquisitive/environment.rb
Class Method Summary collapse
- .[](var_name) ⇒ Object
- .can_find_env_keys_from(var_name) ⇒ Object
- .env_keys_from(var_name) ⇒ Object
- .replace_empty(value) ⇒ Object
- .set_hash_value_of(hash, var) ⇒ Object
Class Method Details
.[](var_name) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/inquisitive/environment.rb', line 43 def [](var_name) result = if ENV.has_key? var_name.to_s env_var = ENV[var_name] if env_var.include? ',' env_var.split(',').map(&:strip) else env_var end elsif env_vars = can_find_env_keys_from(var_name) Hash[].tap do |hash| env_vars.each do |key| set_hash_value_of hash, key end end end replace_empty result end |
.can_find_env_keys_from(var_name) ⇒ Object
66 67 68 69 |
# File 'lib/inquisitive/environment.rb', line 66 def can_find_env_keys_from(var_name) found = env_keys_from(var_name) Inquisitive.present?(found) ? found : nil end |
.env_keys_from(var_name) ⇒ Object
71 72 73 74 75 |
# File 'lib/inquisitive/environment.rb', line 71 def env_keys_from(var_name) ENV.keys.select do |key| key =~ /^#{var_name}__/ end end |
.replace_empty(value) ⇒ Object
97 98 99 |
# File 'lib/inquisitive/environment.rb', line 97 def replace_empty(value) Inquisitive.present?(value) ? value : NilClass.new(nil) end |
.set_hash_value_of(hash, var) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/inquisitive/environment.rb', line 77 def set_hash_value_of(hash, var) keypath = var.split('__').map(&:downcase) keypath.shift # discard variable namespace hash.tap do |hash| keypath.reduce(hash) do |namespace, key| namespace[key] = if key == keypath.last replace_empty Inquisitive[Parser[var]] else if namespace[key].kind_of? ::Hash namespace[key] else Hash.new end end end end end |