@@ -77,7 +77,17 @@ fn moddoc_from_mod(
77
77
}
78
78
}
79
79
} ) ,
80
- enums: doc:: enumlist ( [ ] )
80
+ enums: doc:: enumlist (
81
+ vec:: filter_map ( module. items ) { |item|
82
+ alt item. node {
83
+ ast:: item_enum ( variants, _) {
84
+ some ( enumdoc_from_enum ( item. ident , item. id , variants) )
85
+ }
86
+ _ {
87
+ none
88
+ }
89
+ }
90
+ } )
81
91
}
82
92
}
83
93
@@ -145,6 +155,51 @@ fn should_extract_const_name_and_id() {
145
155
assert doc. topmod . consts [ 0 ] . name == "a" ;
146
156
}
147
157
158
+ fn enumdoc_from_enum (
159
+ name : ast:: ident ,
160
+ id : ast:: node_id ,
161
+ variants : [ ast:: variant ]
162
+ ) -> doc:: enumdoc {
163
+ ~{
164
+ id: id,
165
+ name: name,
166
+ brief: none,
167
+ desc: none,
168
+ variants: variantdocs_from_variants ( variants)
169
+ }
170
+ }
171
+
172
+ fn variantdocs_from_variants (
173
+ variants : [ ast:: variant ]
174
+ ) -> [ doc:: variantdoc ] {
175
+ vec:: map ( variants, variantdoc_from_variant)
176
+ }
177
+
178
+ fn variantdoc_from_variant ( variant : ast:: variant ) -> doc:: variantdoc {
179
+ ~{
180
+ name: variant. node . name ,
181
+ desc: none,
182
+ sig: none
183
+ }
184
+ }
185
+
186
+ #[ test]
187
+ fn should_extract_enums ( ) {
188
+ let source = "enum e { v }" ;
189
+ let ast = parse:: from_str ( source) ;
190
+ let doc = extract ( ast, "" ) ;
191
+ assert doc. topmod . enums [ 0 ] . id != 0 ;
192
+ assert doc. topmod . enums [ 0 ] . name == "e" ;
193
+ }
194
+
195
+ #[ test]
196
+ fn should_extract_enum_variants ( ) {
197
+ let source = "enum e { v }" ;
198
+ let ast = parse:: from_str ( source) ;
199
+ let doc = extract ( ast, "" ) ;
200
+ assert doc. topmod . enums [ 0 ] . variants [ 0 ] . name == "v" ;
201
+ }
202
+
148
203
#[ cfg( test) ]
149
204
mod tests {
150
205
0 commit comments