Sha256: 7218d4bd15dc89907357234de5bb03195297618b16e7fc50b8a5ce61e9d358d4

Contents?: true

Size: 989 Bytes

Versions: 19

Compression:

Stored size: 989 Bytes

Contents

module FactoryGirl
  # @api private
  class DeclarationList
    include Enumerable

    def initialize(name = nil)
      @declarations = []
      @name         = name
      @overridable  = false
    end

    def declare_attribute(declaration)
      delete_declaration(declaration) if overridable?

      @declarations << declaration
      declaration
    end

    def overridable
      @overridable = true
    end

    def attributes
      @attributes ||= AttributeList.new(@name).tap do |list|
        to_attributes.each do |attribute|
          list.define_attribute(attribute)
        end
      end
    end

    def each(&block)
      @declarations.each(&block)
    end

    private

    def delete_declaration(declaration)
      @declarations.delete_if { |decl| decl.name == declaration.name }
    end

    def to_attributes
      @declarations.inject([]) { |result, declaration| result += declaration.to_attributes }
    end

    def overridable?
      @overridable
    end
  end
end

Version data entries

19 entries across 16 versions & 8 rubygems

Version Path
ffactory_girl-4.8.2 lib/factory_girl/declaration_list.rb
factory_girl-4.9.0 lib/factory_girl/declaration_list.rb
ffactory_girl-4.8.1 lib/factory_girl/declaration_list.rb
factory_girl-4.8.1 lib/factory_girl/declaration_list.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/factory_girl-4.8.0/lib/factory_girl/declaration_list.rb
factory_girl-4.8.0 lib/factory_girl/declaration_list.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/factory_girl-4.7.0/lib/factory_girl/declaration_list.rb
factory_girl-4.7.0 lib/factory_girl/declaration_list.rb
opal-factory_girl-4.5.0.3 factory_girl/lib/factory_girl/declaration_list.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/declaration_list.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/declaration_list.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/declaration_list.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/declaration_list.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/declaration_list.rb
apl-library-0.0.90 vendor/bundle/ruby/1.9.1/gems/factory_girl-4.4.0/lib/factory_girl/declaration_list.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/1.9.1/gems/factory_girl-4.4.0/lib/factory_girl/declaration_list.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/declaration_list.rb
factory_girl-4.5.0 lib/factory_girl/declaration_list.rb
factory_girl-4.4.0 lib/factory_girl/declaration_list.rb