Class: TextInterpolator
- Inherits:
-
Object
- Object
- TextInterpolator
- Defined in:
- lib/text_interpolator/version.rb,
lib/text_interpolator/text_interpolator.rb
Constant Summary collapse
- VERSION =
"1.0.3"
Instance Method Summary collapse
- #interpolate(object, env = {}) ⇒ Object
- #interpolate_hash(hash) ⇒ Object
- #interpolate_io(io, env = {}) ⇒ Object
- #interpolate_string(string, env = {}) ⇒ Object
Instance Method Details
#interpolate(object, env = {}) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/text_interpolator/text_interpolator.rb', line 3 def interpolate object, env={} if object.kind_of? String interpolate_string object, env elsif object.kind_of? IO interpolate_io object, env elsif object.kind_of? Hash interpolate_hash object else object end end |
#interpolate_hash(hash) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/text_interpolator/text_interpolator.rb', line 33 def interpolate_hash hash hash.each do |key, value| new_value = interpolate_env_vars value hash[key] = new_value if new_value end env = hash.reduce({}) do |result, value| result[value[0]] = value[1] result end begin substitutions = false hash.each do |key, value| if value.index(/\#\{/) substitutions = true value = value.gsub(/\#{/, '%{') hash[key] = StringIO.new(value).read % env end end end while substitutions hash end |
#interpolate_io(io, env = {}) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/text_interpolator/text_interpolator.rb', line 22 def interpolate_io io, env={} result = '' io.each do |line| result += interpolate_string(line, env) result += '\n' unless io.eof? end result end |
#interpolate_string(string, env = {}) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/text_interpolator/text_interpolator.rb', line 15 def interpolate_string string, env={} string = interpolate_env_vars string string = string.gsub(/\#{/, '%{') if string.index(/\#\{/) StringIO.new(string).read % env end |