Sha256: 8e360df66e4bb564c6cfcd2d6b3add51bcbfb09f09b9a71e20c35eafcacbcaff

Contents?: true

Size: 578 Bytes

Versions: 2

Compression:

Stored size: 578 Bytes

Contents

# frozen_string_literal: true

module Shrek
  class Layers
    def initialize(next_layer_proc = nil)
      next_layer_proc ||= EMPTY_RETURN
      @next_layer = next_layer_proc
    end

    def call(*)
      raise 'Layer subclasses must define #call'
    end

    def skip!(count = 1)
      raise ArgumentError unless count.is_a?(Integer) || count <= 0
      count.times.inject(self) { |acc, _| acc.next_layer }
    end

    def skip(count = 1)
      skip! count
    rescue NoMethodError => _error
      EMPTY_RETURN
    end

    protected

    attr_reader :next_layer
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shrek-0.2.2 lib/shrek/layers.rb
shrek-0.2.1 lib/shrek/layers.rb