Sha256: 14d54513be39ce649ba78817a4062dea96ad7e9e4f8c16cfa072543b9d4b1b7d

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

require 'rom/support/enumerable_dataset'

module ROM
  # A helper module that adds data-proxy behavior to an array-like object
  #
  # @see EnumerableDataset
  #
  # @api public
  module ArrayDataset
    extend DataProxy::ClassMethods
    include EnumerableDataset

    # Extends the class with data-proxy behavior
    #
    # @api private
    def self.included(klass)
      klass.send(:include, DataProxy)
    end

    forward(
      :*, :+, :-, :compact, :compact!, :flatten, :flatten!, :length, :pop,
      :reverse, :reverse!, :sample, :select!, :size, :shift, :shuffle, :shuffle!,
      :slice, :slice!, :sort!, :sort_by!, :uniq, :uniq!, :unshift, :values_at
    )

    [
      :map!, :combination, :cycle, :delete_if, :keep_if, :permutation, :reject!,
      :select!, :sort_by!
    ].each do |method|
      class_eval <<-RUBY, __FILE__, __LINE__ + 1
        def #{method}(*args, &block)
          return to_enum unless block
          self.class.new(data.send(:#{method}, *args, &block))
        end
      RUBY
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rom-0.6.2 lib/rom/support/array_dataset.rb
rom-0.6.1 lib/rom/support/array_dataset.rb
rom-0.6.0 lib/rom/support/array_dataset.rb
rom-0.6.0.rc1 lib/rom/support/array_dataset.rb
rom-0.6.0.beta3 lib/rom/support/array_dataset.rb
rom-0.6.0.beta2 lib/rom/support/array_dataset.rb
rom-0.6.0.beta1 lib/rom/support/array_dataset.rb