Class: TextInterpolator

Inherits:
Object
  • Object
show all
Defined in:
lib/text_interpolator/version.rb,
lib/text_interpolator/text_interpolator.rb

Constant Summary collapse

VERSION =
"1.0.0"

Instance Method Summary collapse

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