Sha256: 119a2dfc0c61a3e556c7cc3c686bc65ae5ac32a2e5e3ae685f5404186a8a42d5

Contents?: true

Size: 610 Bytes

Versions: 1

Compression:

Stored size: 610 Bytes

Contents

# frozen_string_literal: true

module Shrek
  class Runner
    attr_reader :layers, :options

    def initialize(*layers, **options)
      @options = options
      parse_layers!(*layers)
    end

    def call(*args)
      chain.call(*args)
    end

    private

    def chain
      layers.reverse.inject(self_return) { |inner, outer| outer.new(inner) }
    end

    def parse_layers!(*layers)
      # now we use all args as layers, but in future maybe will be convenient
      # to add registry?
      @layers = layers
    end

    def self_return
      options[:self_return] || EMPTY_RETURN
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shrek-0.2.2 lib/shrek/runner.rb