Sha256: f6d813e02386e54dbe73508b9cd8aaa40ff46af5cd1568d8bcc7538722c52e0e

Contents?: true

Size: 862 Bytes

Versions: 48

Compression:

Stored size: 862 Bytes

Contents

# Include helpers. Multiple Modules (Traits) can be named.
#
# Examples:
# * it_is_a Targetable, Accelerateable
# * it_is Targeting::Closest
#
module ItIsA
  
  manual <<-MANUAL
    Defines:
      it_is <some trait>
      it_is_a <some trait>
      it_has <some trait>
    
    Example:
      it_is Controllable
      it_is_a Generator
      it_has Lives
  MANUAL
  
  def self.included traitable_class
    traitable_class.extend ClassMethods
  end
  
  module ClassMethods
    
    #
    # Examples:
    # * it_is_a Shooter
    # * it_is_a Shooter do
    #     frequency 10
    #     …
    #   end
    # * it_is Controllable, Turnable do
    #     …
    #   end
    #
    def it_is *traits, &block
      traits.each { |trait| include trait }
      instance_eval &block if block_given?
    end
    alias it_is_a it_is
    alias it_has it_is
    
  end
  
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
gosu_extensions-0.3.8 lib/core/it_is_a.rb
gosu_extensions-0.3.7 lib/core/it_is_a.rb
gosu_extensions-0.3.6 lib/core/it_is_a.rb
gosu_extensions-0.3.5 lib/core/it_is_a.rb
gosu_extensions-0.3.4 lib/core/it_is_a.rb
gosu_extensions-0.3.3 lib/core/it_is_a.rb
gosu_extensions-0.3.2 lib/core/it_is_a.rb
gosu_extensions-0.3.1 lib/core/it_is_a.rb
gosu_extensions-0.3.0 lib/core/it_is_a.rb
gosu_extensions-0.2.9 lib/core/it_is_a.rb
gosu_extensions-0.2.8 lib/core/it_is_a.rb
gosu_extensions-0.2.7 lib/core/it_is_a.rb
gosu_extensions-0.2.6 lib/core/it_is_a.rb
gosu_extensions-0.2.5 lib/core/it_is_a.rb
gosu_extensions-0.2.4 lib/core/it_is_a.rb
gosu_extensions-0.2.3 lib/core/it_is_a.rb
gosu_extensions-0.2.2 lib/core/it_is_a.rb
gosu_extensions-0.2.1 lib/core/it_is_a.rb
gosu_extensions-0.2.0 lib/core/it_is_a.rb
gosu_extensions-0.1.28 lib/core/it_is_a.rb