@@ -218,13 +218,22 @@ def do_classes
218
218
handle_class_module ( var_name , "module" , class_name , nil , in_module )
219
219
end
220
220
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
228
237
end
229
238
230
239
@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)
650
659
enclosure = @classes [ in_module ] || @@enclosure_classes [ in_module ]
651
660
652
661
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
655
664
enclosure = @classes [ in_module ]
656
665
end
657
666
@@ -675,17 +684,21 @@ def handle_class_module(var_name, type, class_name, parent, in_module)
675
684
end
676
685
677
686
cm = enclosure . add_class RDoc ::NormalClass , class_name , parent_name
678
-
679
- @stats . add_class cm
680
687
else
681
688
cm = enclosure . add_module RDoc ::NormalModule , class_name
682
- @stats . add_module cm
683
689
end
684
690
685
691
cm . record_location enclosure . top_level
686
692
687
693
find_class_comment cm . full_name , cm
688
694
695
+ case cm
696
+ when RDoc ::NormalClass
697
+ @stats . add_class cm
698
+ when RDoc ::NormalModule
699
+ @stats . add_module cm
700
+ end
701
+
689
702
@classes [ var_name ] = cm
690
703
@@enclosure_classes [ var_name ] = cm
691
704
@known_classes [ var_name ] = cm . full_name
0 commit comments