@@ -85,6 +85,10 @@ fn write_mod_contents(
85
85
write_const ( ctxt, constdoc) ;
86
86
}
87
87
88
+ for enumdoc in * doc. enums {
89
+ write_enum ( ctxt, enumdoc) ;
90
+ }
91
+
88
92
for fndoc in * doc. fns {
89
93
write_fn ( ctxt, fndoc) ;
90
94
}
@@ -348,6 +352,91 @@ fn should_write_const_description() {
348
352
assert str:: contains ( markdown, "\n \n a\n \n b\n \n " ) ;
349
353
}
350
354
355
+ fn write_enum (
356
+ ctxt : ctxt ,
357
+ doc : doc:: enumdoc
358
+ ) {
359
+ write_header ( ctxt, h3, #fmt ( "Enum `%s`" , doc. name ) ) ;
360
+ write_brief ( ctxt, doc. brief ) ;
361
+ write_desc ( ctxt, doc. desc ) ;
362
+ write_variants ( ctxt, doc. variants ) ;
363
+ }
364
+
365
+ #[ test]
366
+ fn should_write_enum_header ( ) {
367
+ let markdown = test:: render ( "enum a { b }" ) ;
368
+ assert str:: contains ( markdown, "### Enum `a`\n \n " ) ;
369
+ }
370
+
371
+ #[ test]
372
+ fn should_write_enum_description ( ) {
373
+ let markdown = test:: render (
374
+ "#[doc(brief = \" a\" , desc = \" b\" )] enum a { b }" ) ;
375
+ assert str:: contains ( markdown, "\n \n a\n \n b\n \n " ) ;
376
+ }
377
+
378
+ fn write_variants (
379
+ ctxt : ctxt ,
380
+ docs : [ doc:: variantdoc ]
381
+ ) {
382
+ if vec:: is_empty ( docs) {
383
+ ret;
384
+ }
385
+
386
+ ctxt. w . write_line ( "Variants:" ) ;
387
+ ctxt. w . write_line ( "" ) ;
388
+
389
+ vec:: iter ( docs, { |variant| write_variant ( ctxt, variant) } ) ;
390
+
391
+ ctxt. w . write_line ( "" ) ;
392
+ }
393
+
394
+ fn write_variant ( ctxt : ctxt , doc : doc:: variantdoc ) {
395
+ assert option:: is_some ( doc. sig ) ;
396
+ let sig = option:: get ( doc. sig ) ;
397
+ alt doc. desc {
398
+ some ( desc) {
399
+ ctxt. w . write_line ( #fmt ( "* `%s` - %s" , sig, desc) ) ;
400
+ }
401
+ none {
402
+ ctxt. w . write_line ( #fmt ( "* `%s`" , sig) ) ;
403
+ }
404
+ }
405
+ }
406
+
407
+ #[ test]
408
+ fn should_write_variant_list ( ) {
409
+ let markdown = test:: render (
410
+ "enum a { \
411
+ #[doc = \" test\" ] b, \
412
+ #[doc = \" test\" ] c }") ;
413
+ assert str:: contains (
414
+ markdown,
415
+ "\n \n Variants:\n \
416
+ \n * `b` - test\
417
+ \n * `c` - test\n \n ") ;
418
+ }
419
+
420
+ #[ test]
421
+ fn should_write_variant_list_without_descs ( ) {
422
+ let markdown = test:: render ( "enum a { b, c }" ) ;
423
+ assert str:: contains (
424
+ markdown,
425
+ "\n \n Variants:\n \
426
+ \n * `b`\
427
+ \n * `c`\n \n ") ;
428
+ }
429
+
430
+ #[ test]
431
+ fn should_write_variant_list_with_signatures ( ) {
432
+ let markdown = test:: render ( "enum a { b(int), #[doc = \" a\" ] c(int) }" ) ;
433
+ assert str:: contains (
434
+ markdown,
435
+ "\n \n Variants:\n \
436
+ \n * `b(int)`\
437
+ \n * `c(int)` - a\n \n ") ;
438
+ }
439
+
351
440
#[ cfg( test) ]
352
441
mod test {
353
442
fn render ( source : str ) -> str {
0 commit comments