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.0"
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
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/text_interpolator/text_interpolator.rb', line 34 def interpolate_hash hash pairs = hash.reduce({}) do |result, value| result[value[0]] = value[1] result end hash.each do |key, value| value = value.gsub(/\#/, '%') if value.index("#") hash[key] = StringIO.new(value).read % pairs end hash.each do |key, value| new_value = interpolate_env_vars value hash[key] = new_value if new_value end hash end |
#interpolate_io(io, env = {}) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/text_interpolator/text_interpolator.rb', line 23 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 21 |
# File 'lib/text_interpolator/text_interpolator.rb', line 15 def interpolate_string string, env={} string = string.gsub(/\#/, '%') if string.index("#") string = interpolate_env_vars(string) if string.index('ENV[') StringIO.new(string).read % env end |