Sha256: 7caf60c063754e46a87b1247b1ef0afabece7a8b007fd069cde2d5b47c46a48c

Contents?: true

Size: 669 Bytes

Versions: 2

Compression:

Stored size: 669 Bytes

Contents

module ImageProcessing
  class Processor
    def self.accumulator(name, klass)
      define_method(name) { @accumulator }
      protected(name)
      const_set(:ACCUMULATOR_CLASS, klass)
    end

    def self.apply_operation(accumulator, name, *args, &block)
      if (instance_methods - Object.instance_methods).include?(name)
        instance = new(accumulator)
        instance.public_send(name, *args, &block)
      else
        accumulator.send(name, *args, &block)
      end
    end

    def initialize(accumulator = nil)
      @accumulator = accumulator
    end

    def custom(&block)
      (block && block.call(@accumulator)) || @accumulator
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
image_processing-1.6.0 lib/image_processing/processor.rb
image_processing-1.5.0 lib/image_processing/processor.rb