module MPatch::Include::Class

Public Instance Methods

all_subclasses()
Alias for: subclasses_all
class_attr_accessor(name) click to toggle source

create singleton attribute

# File lib/mpatch/class.rb, line 59
def class_attr_accessor(name)

  ### GET
  begin
    define_method name do
      class_variable_get "@@#{name}"
    end
  end

  ### SET
  begin
    define_method "#{name}=" do |new_val|
      class_variable_set "@@#{name}", new_val
    end
  end

end
class_methods() click to toggle source

get singleton methods to target class without super class methods

# File lib/mpatch/class.rb, line 8
def class_methods
  self.methods - ::Object.methods
end
create_class_method(method,&block) click to toggle source

bind a singleton method to a class object

# File lib/mpatch/class.rb, line 13
def create_class_method(method,&block)
  self.class_eval do
    define_singleton_method method do |*args|
      block.call *args
    end
  end
end
create_instance_method(method,&block) click to toggle source

create an instance method

# File lib/mpatch/class.rb, line 22
def create_instance_method(method,&block)
  self.class_eval do
    define_method method do |*args|
      block.call *args
    end
  end
end
each_subclass() { |candidate| ... } click to toggle source

Iterates over all subclasses (direct and indirect)

# File lib/mpatch/class.rb, line 31
def each_subclass
  ::ObjectSpace.each_object(::Class) { | candidate |
    begin
      yield candidate if candidate < self
    rescue ::ArgumentError
      # comparison of Class with Class failed (ArgumentError)
    end
  }
end
instance_attr_accessor(name) click to toggle source

create class instance attribute

# File lib/mpatch/class.rb, line 78
def instance_attr_accessor(name)

  ### GET
  begin
    define_method name do
      instance_variable_get "@#{name}"
    end
  end

  ### SET
  begin
    define_method "#{name}=" do |new_val|
      instance_variable_set "@#{name}", new_val
    end
  end

end
subclass()
Alias for: subclasses
subclasses() click to toggle source

Returns an Array of direct subclasses

# File lib/mpatch/class.rb, line 51
def subclasses
  ret = []
  each_subclass {|c| ret.push(c) if c.superclass == self }
  ret
end
Also aliased as: subclass
subclasses_all() click to toggle source

Returns an Array of subclasses (direct and indirect)

# File lib/mpatch/class.rb, line 42
def subclasses_all
  ret = []
  each_subclass {|c| ret.push c}
  ret
end
Also aliased as: all_subclasses