Sha256: af4081890093a579bb3b892b3cea66d454f08e619b5b573b33169961299571db
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
# frozen_string_literal: true module Nocode module Util # Built on top of StringTemplate but instead of only working for a string, this will # recursively evaluate all strings within an object. Heuristics: # - Strings evaluate using StringTemplate # - Hashes will have their keys and values traversed # - Arrays will have their entries traversed # - All other types will simply return themselves class ObjectTemplate attr_reader :object def initialize(object) @object = object freeze end def evaluate(values = {}) recursive_evaluate(object, values) end private def recursive_evaluate(expression, values) case expression when Array expression.map { |o| recursive_evaluate(o, values) } when Hash expression.to_h do |k, v| [recursive_evaluate(k, values), recursive_evaluate(v, values)] end when String Nay.evaluate(expression, values) else expression end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nocode-0.0.9 | lib/nocode/util/object_template.rb |