@@ -218,13 +218,22 @@ def do_classes
218218 handle_class_module ( var_name , "module" , class_name , nil , in_module )
219219 end
220220
221- @content . scan ( /([\w \. ]+)\s * = \s *rb_define_class_under\s *
222- \(
223- \s *(\w +),
224- \s *"(\w +)",
225- \s *([\w \* \s \( \) \. \- >]+)\s * # for SWIG
226- \s *\) /mx ) do |var_name , in_module , class_name , parent |
227- handle_class_module ( var_name , "class" , class_name , parent , in_module )
221+ @content . scan ( /([\w \. ]+)\s * = # var_name
222+ \s *rb_define_class_under\s *
223+ \(
224+ \s * (\w +), # under
225+ \s * "(\w +)", # class_name
226+ \s *
227+ (?:
228+ ([\w \* \s \( \) \. \- >]+) | # parent_name
229+ rb_path2class\( "([\w :]+)"\) # path
230+ )
231+ \s *
232+ \)
233+ /mx ) do |var_name , under , class_name , parent_name , path |
234+ parent = path || parent_name
235+
236+ handle_class_module var_name , 'class' , class_name , parent , under
228237 end
229238
230239 @content . scan ( /([\w \. ]+)\s * = \s *rb_singleton_class\s *
@@ -650,8 +659,8 @@ def handle_class_module(var_name, type, class_name, parent, in_module)
650659 enclosure = @classes [ in_module ] || @@enclosure_classes [ in_module ]
651660
652661 if enclosure . nil? and enclosure = @known_classes [ in_module ] then
653- type = /^rb_m/ =~ in_module ? "module" : "class"
654- handle_class_module in_module , type , enclosure , nil , nil
662+ enc_type = /^rb_m/ =~ in_module ? "module" : "class"
663+ handle_class_module in_module , enc_type , enclosure , nil , nil
655664 enclosure = @classes [ in_module ]
656665 end
657666
@@ -675,17 +684,21 @@ def handle_class_module(var_name, type, class_name, parent, in_module)
675684 end
676685
677686 cm = enclosure . add_class RDoc ::NormalClass , class_name , parent_name
678-
679- @stats . add_class cm
680687 else
681688 cm = enclosure . add_module RDoc ::NormalModule , class_name
682- @stats . add_module cm
683689 end
684690
685691 cm . record_location enclosure . top_level
686692
687693 find_class_comment cm . full_name , cm
688694
695+ case cm
696+ when RDoc ::NormalClass
697+ @stats . add_class cm
698+ when RDoc ::NormalModule
699+ @stats . add_module cm
700+ end
701+
689702 @classes [ var_name ] = cm
690703 @@enclosure_classes [ var_name ] = cm
691704 @known_classes [ var_name ] = cm . full_name
0 commit comments