Sha256: 9dc1b8e0a7a04fd7e8b664662f1519e3996ba601a09e39463e16e99d6ef5532b

Contents?: true

Size: 822 Bytes

Versions: 13

Compression:

Stored size: 822 Bytes

Contents

class ReeDto::BuildDtoCollectionClass
  include Ree::FnDSL

  fn :build_dto_collection_class do
    link :camelize, from: :ree_string
    link "ree_dto/dto/dto_collection", -> { DtoCollection }
  end

  contract Class, Symbol, Any => Class
  def call(klass, collection_name, entity_contract)
    name = camelize(collection_name.to_s)

    const = Class.new(DtoCollection) do
      contract entity_contract => nil
      def add(item)
        @list ||= []
        @list.push(item)
        nil
      end

      contract entity_contract => Nilor[entity_contract]
      def remove(item)
        @list.delete(item)
      end

      alias :<< :add
      alias :push :add
      alias :remove :delete
    end

    const_name = "#{name}CollectionDto"
    klass.const_set(const_name, const)
    klass.const_get(const_name)
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
ree_lib-1.1.1 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.1.0 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.124 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.123 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.122 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.121 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.120 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.115 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_dto/package/ree_dto/functions/build_dto_collection_class.rb