Sha256: cd05fd45ed82f9854c8302f94f2d86ea484335a7e5d3922d948c6b6baba02f4a

Contents?: true

Size: 944 Bytes

Versions: 93

Compression:

Stored size: 944 Bytes

Contents

module FactoryGirl
  class EvaluatorClassDefiner
    def initialize(attributes, callbacks, parent_class)
      @parent_class = parent_class
      @callbacks    = callbacks
      @attributes   = attributes

      attributes.each do |attribute|
        define_attribute(attribute.name, attribute.to_proc)
      end
    end

    def evaluator_class
      @evaluator_class ||= Class.new(@parent_class).tap do |klass|
        klass.callbacks ||= []
        klass.callbacks += @callbacks
        klass.attribute_lists ||= []
        klass.attribute_lists += [@attributes]
      end
    end

    private

    def define_attribute(attribute_name, attribute_proc)
      evaluator_class.send(:define_method, attribute_name) do
        if @cached_attributes.key?(attribute_name)
          @cached_attributes[attribute_name]
        else
          @cached_attributes[attribute_name] = instance_exec(&attribute_proc)
        end
      end
    end
  end
end

Version data entries

93 entries across 84 versions & 5 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.7.4 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.7.3 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
judge-2.0.5 vendor/bundle/ruby/2.1.0/gems/factory_girl-2.6.4/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.7.2 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.7.1 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.7.0 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.9 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.8 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.7 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.6 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.5 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.4 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.3 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.2 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.1 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.6.0 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.5.17 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.5.16 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb
classiccms-0.5.15 vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb