class K::Replace::Statement

Attributes

keys[R]
source[R]

Public Class Methods

new(source) click to toggle source
# File lib/k/replace/statement.rb, line 10
def initialize(source)
  @keys = []
  @source = source

  find_all(@source) do |key|
    @keys << key
  end
end

Public Instance Methods

replace(hash) click to toggle source
# File lib/k/replace/statement.rb, line 19
def replace(hash)
  @source.gsub(kreplace.key_pattern) do |key|
    replaced = ''
    find_all(key) do |match|
      chained = chain_property(match)
      chained.each{|k, v| replaced = resolve_property(k, v, hash[k])}
    end
    replaced
  end
end

Private Instance Methods

resolve_property(ch_key, ch_value, obj) click to toggle source
# File lib/k/replace/statement.rb, line 32
def resolve_property(ch_key, ch_value, obj)
  return resolve_property ch_value.keys[0], ch_value[ch_value.keys[0]], obj.send(ch_value.keys[0].to_s) if ch_value.is_a?(Hash)
  obj.send(ch_value)
end