lib/mpatch/module.rb in mpatch-2.3.0 vs lib/mpatch/module.rb in mpatch-2.4.0

- old
+ new

@@ -1,77 +1,88 @@ -module MPatch::Include - module Module +module MPatch - # return the module objects direct sub modules - def submodules - constants.collect {|const_name| const_get(const_name)}.select {|const| const.class == ::Module} - end + module Include - # return the module objects direct sub modules - def subclasses - constants.collect {|const_name| const_get(const_name)}.select {|const| const.class == ::Class} - end + module Module - alias :modules :submodules - alias :classes :subclasses + # return the module objects direct sub modules + def submodules + constants.collect {|const_name| const_get(const_name)}.select {|const| const.class == ::Module} + end - def mixin_ancestors(include_ancestors=true) - ancestors.take_while {|a| include_ancestors || a != superclass }. - select {|ancestor| ancestor.instance_of?( ::Module ) } - end + # return the module objects direct sub modules + def subclasses + constants.collect {|const_name| const_get(const_name)}.select {|const| const.class == ::Class} + end - def inherited_by *args + alias :modules :submodules + alias :classes :subclasses - if args.empty? - args.push(::Class) - args.push(::Module) + def mixin_ancestors(include_ancestors=true) + ancestors.take_while {|a| include_ancestors || a != superclass }. + select {|ancestor| ancestor.instance_of?( ::Module ) } end - return_array= [] - args.each do |type_name| + def inherited_by *args - ::ObjectSpace.each_object(type_name) do |candidate| - begin + if args.empty? + args.push(::Class) + args.push(::Module) + end - if !return_array.include?(candidate) && candidate != self - case self.class.to_s + return_array= [] + args.each do |type_name| - when "Module" - return_array.push candidate if candidate.mixin_ancestors.include?(self) + ::ObjectSpace.each_object(type_name) do |candidate| + begin - when "Class" - return_array.push candidate if candidate < self + if !return_array.include?(candidate) && candidate != self + case self.class.to_s + when "Module" + return_array.push candidate if candidate.mixin_ancestors.include?(self) + + when "Class" + return_array.push candidate if candidate < self + + end + end + rescue ::ArgumentError, ::NoMethodError end - - rescue ::ArgumentError, ::NoMethodError end + end + return_array end - return_array + end - end -end -module MPatch::Extend - module Module + module Extend - def convert_instance_methods_to_singleton_methods + module Module - self.instance_methods.each do |symbol| - module_function symbol - public symbol + def convert_instance_methods_to_singleton_methods + + self.instance_methods.each do |symbol| + module_function symbol + public symbol + end + end + alias :ci2s :convert_instance_methods_to_singleton_methods + alias :instances2singletons :convert_instance_methods_to_singleton_methods + end - alias :ci2s :convert_instance_methods_to_singleton_methods - alias :instances2singletons :convert_instance_methods_to_singleton_methods - end -end \ No newline at end of file + + require File.join 'mpatch','injector' + + +end