Sha256: c5b3be47d4373f07f91322b9b1537480d960528159065a46997857b16b2cea5c
Contents?: true
Size: 907 Bytes
Versions: 1
Compression:
Stored size: 907 Bytes
Contents
# -*- encoding: utf-8 -*- # frozen_string_literal: true module K module Replace class Statement include Keys include DynamicAccessors attr_reader :source, :keys def initialize(source) @keys = [] @source = source find_all(@source) do |key| @keys << key end end 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 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 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
k-replace-1.0.0 | lib/k/replace/statement.rb |