Sha256: ba89226a3c6dd597b3942f45b39c74c08a1a1fccca69c21e9504c8eb6ef14178

Contents?: true

Size: 836 Bytes

Versions: 5

Compression:

Stored size: 836 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

  contract None => String
  def to_s
    inspect
  end

  contract None => String
  def inspect
    @list.inspect
  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

5 entries across 5 versions & 1 rubygems

Version Path
ree_lib-1.0.120 lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_collection.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_collection.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_collection.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_collection.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_collection.rb