module Interpolation
Constants
- INTERPOLATION_PATTERN
Public Instance Methods
interpolate(string, values = {})
click to toggle source
# File lib/ruby3mf/interpolation.rb, line 9 def interpolate(string, values = {}) string.gsub(INTERPOLATION_PATTERN) do |match| if match == '%%' '%' else key = ($1 || $2 || match.tr("%{}", "")).to_sym value = values[key] value = value.call(values) if value.respond_to?(:call) $3 ? sprintf("%#{$3}", value) : value end end end
map_value(thing)
click to toggle source
# File lib/ruby3mf/interpolation.rb, line 28 def map_value(thing) case thing when Hash symbolize_recursive(thing) when Array thing.map { |v| map_value(v) } else thing end end
symbolize_recursive(hash)
click to toggle source
# File lib/ruby3mf/interpolation.rb, line 22 def symbolize_recursive(hash) {}.tap do |h| hash.each { |key, value| h[key.to_sym] = map_value(value) } end end