class Class

Public Instance Methods

add_a_child_class(class_name, class_definitions="") click to toggle source
# File lib/rubyhacks.rb, line 165
def add_a_child_class(class_name, class_definitions="")
        class_eval("class #{class_name} < #{self}; end")
        new_class = const_get(class_name)
        new_class.class_eval(class_definitions)       
        new_class
end
aliold(sym) click to toggle source
# File lib/rubyhacks.rb, line 138
def aliold(sym)
        (eputs "Warning: This method: #{:old_+sym} already exists"; return) if instance_methods.include?(:old_+sym)
        
        alias_method((:old_+sym),sym)
end
class_accessor(*args) click to toggle source
# File lib/rubyhacks.rb, line 156
def class_accessor(*args)
        args.each do |variable|
                new_class_method(variable){class_variable_get(variable)}
                new_class_method(variable+"=".to_sym) do |value|
                                class_variable_set(variable,value)
                end
        end
end
class_variable_get(var, *args) click to toggle source
# File lib/rubyhacks.rb, line 145
def class_variable_get(var, *args)
        var = var.to_s=~ /^@@/ ? var : "@@" + var.to_s
        old_class_variable_get(var, *args)
end
class_variable_set(var,*args) click to toggle source
# File lib/rubyhacks.rb, line 151
def class_variable_set(var,*args)
        var = var.to_s=~ /^@@/ ? var : "@@" + var.to_s
        old_class_variable_set(var, *args)
end
instance_method?(meth) click to toggle source
# File lib/rubyhacks.rb, line 179
def instance_method?(meth)
        return instance_methods.include?(meth.to_sym)
end
new_class_method(method, &block) click to toggle source

def new_class_method(method, &block)

self.class.send(:define_method,method, &block)

end

# File lib/rubyhacks.rb, line 133
def new_class_method(method, &block)
        define_singleton_method(method, &block)
end
phoenix(file_name) { |obj| ... } click to toggle source
# File lib/rubyhacks.rb, line 881
def phoenix(file_name, &block)
        if FileTest.exist? file_name
                obj = eval(File.read(file_name), binding, file_name)
                raise "Corrupt File: #{file_name}" unless obj.class == self
        else 
                obj = new
                obj.phoenix(file_name)
        end
        if block
                yield(obj)
                obj.phoenix(file_name)
        else  
                return obj
        end
end
recursive_const_get(string) click to toggle source
# File lib/rubyhacks.rb, line 172
def recursive_const_get(string)
        string.split(/::/).inject(nil){|const, name| const ? const.const_get(name) : const_get(name)}
end