@@ -194,7 +194,7 @@ private void WriteMemberInfoRemarks(XElement memberDocElement)
194194 }
195195 }
196196
197- private MarkdownTextElement XElementToMarkdown ( XElement element )
197+ private object XElementToMarkdown ( XElement element )
198198 {
199199 return element . Name . ToString ( ) switch
200200 {
@@ -205,6 +205,7 @@ private MarkdownTextElement XElementToMarkdown(XElement element)
205205 "para" => this . XNodesToMarkdownParagraph ( element . Nodes ( ) ) ,
206206 "example" => this . XNodesToMarkdownParagraph ( element . Nodes ( ) ) ,
207207 "code" => new MarkdownCode ( "csharp" , TypeDocumentation . FormatCodeElementValue ( element . Value ) ) ,
208+ "list" => this . XElementToMarkdownList ( element ) ,
208209 _ => new MarkdownText ( element . Value )
209210 } ;
210211 }
@@ -268,7 +269,7 @@ private MarkdownParagraph XNodesToMarkdownParagraph(IEnumerable<XNode> nodes)
268269
269270 foreach ( XNode node in nodes )
270271 {
271- MarkdownTextElement element = this . XNodeToMarkdown ( node ) ;
272+ object element = this . XNodeToMarkdown ( node ) ;
272273 if ( element is null )
273274 {
274275 continue ;
@@ -305,7 +306,76 @@ private MarkdownParagraph XNodesToMarkdownParagraph(IEnumerable<XNode> nodes)
305306 return new MarkdownParagraph ( string . Join ( Environment . NewLine , blocks ) ) ;
306307 }
307308
308- private MarkdownTextElement XNodeToMarkdown ( XNode node )
309+ private MarkdownList XElementToMarkdownList ( XElement element )
310+ {
311+ MarkdownList markdownList = element . Attribute ( "type" ) ? . Value switch
312+ {
313+ "number" => new MarkdownOrderedList ( ) ,
314+ _ => new MarkdownList ( )
315+ } ;
316+
317+ foreach ( XElement item in element . Elements ( "item" ) )
318+ {
319+ MarkdownText markdownListItem = new ( string . Empty ) ;
320+
321+ IEnumerable < XNode > term = item . Element ( "term" ) . Nodes ( ) ;
322+
323+ MarkdownText markdownTerm = null ;
324+
325+ foreach ( XNode node in term )
326+ {
327+ object md = this . XNodeToMarkdown ( node ) ;
328+ if ( md is MarkdownInlineElement inlineElement )
329+ {
330+ if ( markdownTerm is null )
331+ {
332+ markdownTerm = new MarkdownText ( inlineElement ) ;
333+ }
334+ else
335+ {
336+ markdownTerm . Append ( inlineElement ) ;
337+ }
338+ }
339+ }
340+
341+ if ( markdownTerm is not null )
342+ {
343+ markdownListItem . Append ( new MarkdownStrongEmphasis ( markdownTerm ) ) ;
344+ }
345+
346+ IEnumerable < XNode > description = item . Element ( "description" ) . Nodes ( ) ;
347+
348+ MarkdownText markdownDescription = null ;
349+
350+ foreach ( XNode node in description )
351+ {
352+ object md = this . XNodeToMarkdown ( node ) ;
353+ if ( md is MarkdownInlineElement inlineElement )
354+ {
355+ if ( markdownDescription is null )
356+ {
357+ markdownDescription = new MarkdownText ( inlineElement ) ;
358+ }
359+ else
360+ {
361+ markdownDescription . Append ( inlineElement ) ;
362+ }
363+ }
364+ }
365+
366+ if ( markdownDescription is not null )
367+ {
368+ markdownListItem . Append ( " - " ) ;
369+ markdownListItem . Append ( markdownDescription ) ;
370+ }
371+
372+ markdownList . AddItem ( markdownListItem ) ;
373+ }
374+
375+ return markdownList ;
376+ }
377+
378+ private object XNodeToMarkdown ( XNode node )
309379 {
310380 return node switch
311381 {
0 commit comments