Sha256: 2fb8446af3fbc6d83156efa0cd8ce32d9cd170f7184439340b1512dbe55cdbd8

Contents?: true

Size: 715 Bytes

Versions: 2

Compression:

Stored size: 715 Bytes

Contents

require_relative "./collection_filter"

class ReeDto::DtoCollection
  include Enumerable
  extend Forwardable

  def_delegators *([:@list] + Array.public_instance_methods - Object.public_instance_methods)

  LoadError = Class.new(ArgumentError)

  attr_reader :name, :contract, :parent_class

  contract Symbol, Any, Any => Any
  def initialize(name, contract, parent_class)
    @parent_class = parent_class
    @contract = contract
    @name = name
    @list = []
  end

  contract Optblock => Any
  def each(&block)
    @list.each(&block)
  end

  class << self
    def filter(name, filter_proc)
      define_method name do
        ReeDto::CollectionFilter.new(self, name, filter_proc)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ree_lib-1.0.115 lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_collection.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_collection.rb