Sha256: e4ae66710d49c99bde86c2a618ae351bde94b520c89e04eb5c064b9e5eb40d33

Contents?: true

Size: 886 Bytes

Versions: 1

Compression:

Stored size: 886 Bytes

Contents

# frozen_string_literal: true

module Floe
  class Workflow
    class PayloadTemplate
      def initialize(payload)
        @payload = payload
      end

      def value(context, inputs = {})
        interpolate_value_nested(payload, context, inputs)
      end

      private

      attr_reader :payload

      def interpolate_value_nested(value, context, inputs)
        case value
        when Array
          value.map { |val| interpolate_value_nested(val, context, inputs) }
        when Hash
          value.to_h do |key, val|
            if key.end_with?(".$")
              [key.chomp(".$"), interpolate_value_nested(val, context, inputs)]
            else
              [key, val]
            end
          end
        when String
          value.start_with?("$") ? Path.value(value, context, inputs) : value
        else
          value
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
floe-0.3.0 lib/floe/workflow/payload_template.rb