module Monkey::Ext::ExtDSL
Public Instance Methods
Source
# File lib/monkey/ext.rb, line 63 def alias_core_method(old_name, new_name) new_name = new_name % old_name if new_name.is_a? String core_class.send :alias_method, new_name, old_name old_name end
Source
# File lib/monkey/ext.rb, line 80 def class_methods(&block) self::ExtClassMethods.class_eval(&block) end
Source
# File lib/monkey/ext.rb, line 16 def core_class(klass = nil) if klass @core_class = klass klass.send :include, self self::ExtClassMethods.extend ClassDsl self::ExtClassMethods.core_class @core_class @core_class.class_eval <<-EOS def method_missing(meth, *args, &blk) return super if Monkey::Backend.setup? Monkey::Backend.setup __send__(meth, *args, &blk) end EOS propagate_include end @core_class end
Source
# File lib/monkey/ext.rb, line 35 def each_module(&block) list = [] ObjectSpace.each_object(Class) { |c| list << c } list.each(&block) end
Source
# File lib/monkey/ext.rb, line 84 def expects(*list) list.each do |name| Monkey::Ext.expectations[core_class] << name.to_s end end
Source
# File lib/monkey/ext.rb, line 69 def feature(name, mode = :instance, &block) case mode when :instance then block.call when :class then class_methods(&block) when :shared feature(name, :instance, &block) feature(name, :class, &block) else raise ArgumentError, "unkown mode #{mode.inspect}" end end
Source
# File lib/monkey/ext.rb, line 54 def included(klass) klass.extend self::ExtClassMethods super end
Calls superclass method
Source
# File lib/monkey/ext.rb, line 46 def propagate_include return if core_class.is_a? Class each_module do |mod| next unless mod < core_class and not mod < self mod.send(:include, core_class) end end
Source
# File lib/monkey/ext.rb, line 59 def rename_core_method(old_name, new_name) core_class.send :undef_method, alias_core_method(old_name, new_name) end