Sha256: 36f6ffdb1f3f276d848d7ebeec1fede0078a76457c4d93dd73f78d4036cbbbe0

Contents?: true

Size: 680 Bytes

Versions: 2

Compression:

Stored size: 680 Bytes

Contents

# frozen_string_literal: true

module Nocode
  class OptionsTemplate
    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
        Util::StringTemplate.new(expression).evaluate(values)
      else
        expression
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nocode-0.0.2 lib/nocode/options_template.rb
nocode-0.0.1 lib/nocode/options_template.rb