From: Devin Mullins Date: 2005-07-28T13:47:30+09:00 Subject: Re: What's so special about operators, built-in classes and modules? Devin Mullins wrote: > require 'ruby2ruby' #see http://dark.fhtr.org/ruby2ruby.rb > #or http://blog.zenspider.com/archives/2005/02/rubytoruby.html > > class Module > alias_method :orig_include, :include > def include(*mods) > classes, mods = mods.partition {|m| m.is_a? Class} > classes.each {|klass| klass.append_features(self)} > orig_include(mods) > end > end > > class Class > def append_features(mod) > constants.each {|const| mod.const_set(const,const_get(const))} > class_variables.each do |var| > value = eval "@@#{var}" > mod.class_eval { @@temp = value } > mod.class_eval "@@#{var} = @@temp" > end > instance_methods.each do |meth| > mod.class_eval instance_method(meth).to_ruby > end > end > end > Oops, make that: ... instance_methods.each do |meth| mod.class_eval instance_method(meth).to_ruby unless mod.method_defined?(meth) end ... Devin