Sha256: 305d8d23bb3f1a93e20f7bc65e1d7227fb0f7132725611a5fcaccd840ca704a5

Contents?: true

Size: 975 Bytes

Versions: 56

Compression:

Stored size: 975 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 attribute_list
      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

56 entries across 56 versions & 4 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.7.4 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.7.3 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.7.2 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.7.1 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.7.0 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.9 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.8 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.7 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.6 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.5 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.4 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.3 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.2 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.1 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.6.0 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.5.17 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.5.16 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.5.15 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb
classiccms-0.5.14 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/declaration_list.rb