Class: Dip::Environment
- Inherits:
-
Object
- Object
- Dip::Environment
- Defined in:
- lib/dip/environment.rb
Constant Summary collapse
- VAR_REGEX =
/\$[\{]?(?<var_name>[a-zA-Z_][a-zA-Z0-9_]*)[\}]?/.freeze
- SPECIAL_VARS =
{"DIP_OS" => :find_dip_os}.freeze
Instance Attribute Summary collapse
-
#vars ⇒ Object
readonly
Returns the value of attribute vars.
Instance Method Summary collapse
- #[](name) ⇒ Object
- #[]=(key, value) ⇒ Object
-
#initialize(default_vars) ⇒ Environment
constructor
A new instance of Environment.
- #interpolate(value) ⇒ Object (also: #replace)
- #merge(new_vars) ⇒ Object
Constructor Details
#initialize(default_vars) ⇒ Environment
10 11 12 13 14 |
# File 'lib/dip/environment.rb', line 10 def initialize(default_vars) @vars = {} merge(default_vars || {}) end |
Instance Attribute Details
#vars ⇒ Object (readonly)
Returns the value of attribute vars.
8 9 10 |
# File 'lib/dip/environment.rb', line 8 def vars @vars end |
Instance Method Details
#[](name) ⇒ Object
23 24 25 |
# File 'lib/dip/environment.rb', line 23 def [](name) vars.fetch(name) { ENV[name] } end |
#[]=(key, value) ⇒ Object
27 28 29 |
# File 'lib/dip/environment.rb', line 27 def []=(key, value) @vars[key] = value end |
#interpolate(value) ⇒ Object Also known as: replace
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/dip/environment.rb', line 31 def interpolate(value) value.gsub(VAR_REGEX) do var_name = Regexp.last_match[:var_name] if SPECIAL_VARS.key?(var_name) self[var_name] || send(SPECIAL_VARS[var_name]) else self[var_name] end end end |
#merge(new_vars) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/dip/environment.rb', line 16 def merge(new_vars) new_vars.each do |key, value| key = key.to_s @vars[key] = ENV.fetch(key) { interpolate(value.to_s) } end end |