class Module

Public Instance Methods

class_descendants() click to toggle source
# File lib/omega/descendants.rb, line 6
def class_descendants
  ObjectSpace.each_object(Class).select {|c| c < self}
end
cmemoize(n, *m) click to toggle source
# File lib/omega/memoize.rb, line 19
def cmemoize n, *m
  singleton_class.memoize n, *m
end
descendants() click to toggle source
# File lib/omega/descendants.rb, line 2
def descendants
  ObjectSpace.each_object(Module).select {|m| m < self}
end
memoize(n, *arr) click to toggle source
# File lib/omega/memoize.rb, line 2
def memoize n, *arr
  ([n] + arr).each do |m|
    meth = instance_method(m)
    hash = Hash.new
    define_method m do |*args|
      if hash.include? args
        hash[args]
      else
        meth = meth.bind(self) if meth.is_a? UnboundMethod
        v = hash[args] = meth.call(*args)
        v.freeze
        v
      end
    end
  end
end