@@ -26,6 +26,8 @@ def parse_member(decl:, context:, outer_name: nil)
26
26
when ::RBS ::AST ::Declarations ::Constant
27
27
context = @top_level . find_class_or_module outer_name . to_s if outer_name
28
28
parse_constant_decl ( decl : decl , context : context , outer_name : outer_name )
29
+ when ::RBS ::AST ::Declarations ::Interface
30
+ parse_module_decl ( decl : decl , context : context , outer_name : outer_name )
29
31
when ::RBS ::AST ::Members ::MethodDefinition
30
32
context = @top_level . find_class_or_module outer_name . to_s if outer_name
31
33
parse_method_decl ( decl : decl , context : context , outer_name : outer_name )
@@ -35,6 +37,12 @@ def parse_member(decl:, context:, outer_name: nil)
35
37
when ::RBS ::AST ::Members ::AttrReader , ::RBS ::AST ::Members ::AttrWriter , ::RBS ::AST ::Members ::AttrAccessor
36
38
context = @top_level . find_class_or_module outer_name . to_s if outer_name
37
39
parse_attr_decl ( decl : decl , context : context , outer_name : outer_name )
40
+ when ::RBS ::AST ::Members ::Include
41
+ context = @top_level . find_class_or_module outer_name . to_s if outer_name
42
+ parse_include_decl ( decl : decl , context : context , outer_name : outer_name )
43
+ when ::RBS ::AST ::Members ::Extend
44
+ context = @top_level . find_class_or_module outer_name . to_s if outer_name
45
+ parse_extend_decl ( decl : decl , context : context , outer_name : outer_name )
38
46
end
39
47
end
40
48
@@ -94,6 +102,38 @@ def parse_attr_decl(decl:, context:, outer_name: nil)
94
102
context . add_attribute ( attribute )
95
103
end
96
104
105
+ def parse_include_decl ( decl :, context :, outer_name : nil )
106
+ name = decl . name . to_s
107
+ outer_names = outer_name ? outer_name . to_s . split ( "::" ) : [ ]
108
+ qualified_name = ''
109
+ outer_names . each do |namespace |
110
+ qualified_name += namespace
111
+ if ( module_name = @top_level . find_module_named ( ( qualified_name += "::" ) + name ) )
112
+ name = module_name . full_name
113
+ break
114
+ end
115
+ end
116
+ include_decl = RDoc ::Include . new ( name , nil )
117
+ include_decl . comment = construct_comment ( context : context , comment : decl . comment . string ) if decl . comment
118
+ context . add_include ( include_decl )
119
+ end
120
+
121
+ def parse_extend_decl ( decl :, context :, outer_name : nil )
122
+ name = decl . name . to_s
123
+ outer_names = outer_name ? outer_name . to_s . split ( "::" ) : [ ]
124
+ qualified_name = ''
125
+ outer_names . each do |namespace |
126
+ qualified_name += namespace
127
+ if ( module_name = @top_level . find_module_named ( ( qualified_name += "::" ) + name ) )
128
+ name = module_name . full_name
129
+ break
130
+ end
131
+ end
132
+ extend_decl = RDoc ::Extend . new ( name , nil )
133
+ exclude_decl . comment = construct_comment ( context : context , comment : decl . comment . string ) if decl . comment
134
+ context . add_extend ( extend_decl )
135
+ end
136
+
97
137
private
98
138
99
139
def construct_comment ( context :, comment :)
0 commit comments