Module: ClassMethods

Included in:
AClass
Defined in:
lib/carat-dev/class-constructor/constructor_methods.rb

Overview

ClassMethods

This allows all classes to be instantiated via methods of the same name, rather then having to use #new. Because these methods are capitalized, like their class couterpart, parenthesis are required.

Example

require 'carat-dev/class_methods'

class AClass
  include ClassMethods
  def initialize(a)
    @a = a
  end
end

aobj = AClass(1)   # same as AClass.new(1)

class BClass < AClass
end

bobj = BClass(2)   # same as BClass.new(2)

Class Method Summary collapse

Class Method Details

.include_in_allObject



43
44
45
46
47
# File 'lib/carat-dev/class-constructor/constructor_methods.rb', line 43

def self.include_in_all
  Object.class_eval do
    include ClassMethods
  end
end

.included(klass) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/carat-dev/class-constructor/constructor_methods.rb', line 27

def self.included( klass )
  Object.instance_eval {
    define_method( klass.name ) do |*args|
      klass.new(*args)
    end
  }
  def klass.inherited( klass )
    Object.instance_eval {
      define_method( klass.name ) do |*args|
        klass.new(*args)
      end
    }
    super if defined? super
  end
end