Sha256: 9b1e8a702f67a5ad4540d87346545890ddc51d772cc1866b214ba95538c7dc7e

Contents?: true

Size: 861 Bytes

Versions: 5

Compression:

Stored size: 861 Bytes

Contents

module Support
  module Objects
    extend ActiveSupport::Concern

    module ClassMethods
      def uses_objects(*objects)
        before { create_objects(*objects) }
      end
    end

    def create_objects(*objects)
      objects.each { |object| create_object(object) }
    end

    def remove_objects(*objects)
      objects.each { |object| remove_object(object) }
    end

    def create_object(object)
      remove_object(object)
      Kernel.const_set(object, Object(object))
    end

    def remove_object(object)
      Kernel.send(:remove_const, object) if Kernel.const_defined?(object)
    end

    def Object(name=nil)
      Class.new.tap do |object|
        object.class_eval """
          def self.name; '#{name}' end
          def self.to_s; '#{name}' end
        """ if name
        object.send(:include, Toy::Object)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
toystore-0.10.3 spec/support/objects.rb
toystore-0.10.2 spec/support/objects.rb
toystore-0.10.1 spec/support/objects.rb
toystore-0.10.0 spec/support/objects.rb
toystore-0.9.0 spec/support/objects.rb