@@ -405,14 +405,6 @@ def DelegateClass(superclass, &block)
405405 protected_instance_methods -= ignores
406406 public_instance_methods = superclass . public_instance_methods
407407 public_instance_methods -= ignores
408-
409- instance_methods = ( public_instance_methods + protected_instance_methods )
410- normal , special = instance_methods . partition { |m | m . match? ( /\A [a-zA-Z]\w *[!\? ]?\z / ) }
411-
412- source = normal . map do |method |
413- "def #{ method } (...); __getobj__.#{ method } (...); end"
414- end
415-
416408 klass . module_eval do
417409 def __getobj__ # :nodoc:
418410 unless defined? ( @delegate_dc_obj )
@@ -421,21 +413,18 @@ def __getobj__ # :nodoc:
421413 end
422414 @delegate_dc_obj
423415 end
424-
425416 def __setobj__ ( obj ) # :nodoc:
426417 __raise__ ::ArgumentError , "cannot delegate to self" if self . equal? ( obj )
427418 @delegate_dc_obj = obj
428419 end
429-
430- class_eval ( source . join ( ";" ) , __FILE__ , __LINE__ )
431-
432- special . each do |method |
420+ protected_instance_methods . each do |method |
421+ define_method ( method , Delegator . delegating_block ( method ) )
422+ protected method
423+ end
424+ public_instance_methods . each do |method |
433425 define_method ( method , Delegator . delegating_block ( method ) )
434426 end
435-
436- protected ( *protected_instance_methods )
437427 end
438-
439428 klass . define_singleton_method :public_instance_methods do |all = true |
440429 super ( all ) | superclass . public_instance_methods
441430 end
0 commit comments