@@ -279,25 +279,7 @@ protected override void Write(LlmMarkdownRenderer renderer, Table table)
279
279
// Render table header
280
280
if ( table . Count > 0 && table [ 0 ] is TableRow headerRow )
281
281
{
282
- renderer . Writer . Write ( "|" ) ;
283
- var cellIndex = 0 ;
284
- foreach ( var cell in headerRow . Cast < TableCell > ( ) )
285
- {
286
- renderer . Writer . Write ( " " ) ;
287
-
288
- // Capture cell content
289
- var content = DocumentationObjectPoolProvider . UseLlmMarkdownRenderer ( renderer . BuildContext , cell . Descendants ( ) . OfType < Inline > ( ) , static ( tmpRenderer , obj ) =>
290
- {
291
- foreach ( var inline in obj )
292
- tmpRenderer . Write ( inline ) ;
293
- } ) ;
294
- // Write padded content
295
- renderer . Writer . Write ( content . PadRight ( columnWidths [ cellIndex ] ) ) ;
296
- renderer . Writer . Write ( " |" ) ;
297
- cellIndex ++ ;
298
- }
299
-
300
- renderer . WriteLine ( ) ;
282
+ RenderTableRowCells ( renderer , headerRow , columnWidths ) ;
301
283
302
284
// Render separator row with proper alignment
303
285
renderer . Writer . Write ( "|" ) ;
@@ -313,27 +295,26 @@ protected override void Write(LlmMarkdownRenderer renderer, Table table)
313
295
// Render table body with aligned columns
314
296
foreach ( var row in table . Skip ( 1 ) . Cast < TableRow > ( ) )
315
297
{
316
- renderer . Writer . Write ( "|" ) ;
317
- var cellIndex = 0 ;
318
- foreach ( var cell in row . Cast < TableCell > ( ) )
319
- {
320
- renderer . Writer . Write ( " " ) ;
321
-
322
- // Capture cell content
323
- var content = DocumentationObjectPoolProvider . UseLlmMarkdownRenderer ( renderer . BuildContext , cell . Descendants ( ) . OfType < Inline > ( ) , static ( tmpRenderer , obj ) =>
324
- {
325
- foreach ( var inline in obj )
326
- tmpRenderer . Write ( inline ) ;
327
- } ) ;
328
-
329
- // Write padded content
330
- renderer . Writer . Write ( content . PadRight ( columnWidths [ cellIndex ] ) ) ;
331
- renderer . Writer . Write ( " |" ) ;
332
- cellIndex ++ ;
333
- }
298
+ RenderTableRowCells ( renderer , row , columnWidths ) ;
299
+ }
300
+ }
334
301
335
- renderer . WriteLine ( ) ;
302
+ /// <summary>
303
+ /// Renders a table row with proper cell alignment and padding
304
+ /// </summary>
305
+ private static void RenderTableRowCells ( LlmMarkdownRenderer renderer , TableRow row , int [ ] columnWidths )
306
+ {
307
+ renderer . Writer . Write ( "|" ) ;
308
+ var cellIndex = 0 ;
309
+ foreach ( var cell in row . Cast < TableCell > ( ) )
310
+ {
311
+ renderer . Writer . Write ( " " ) ;
312
+ var content = RenderTableCellContent ( renderer , cell ) ;
313
+ renderer . Writer . Write ( content . PadRight ( columnWidths [ cellIndex ] ) ) ;
314
+ renderer . Writer . Write ( " |" ) ;
315
+ cellIndex ++ ;
336
316
}
317
+ renderer . WriteLine ( ) ;
337
318
}
338
319
339
320
/// <summary>
@@ -352,24 +333,32 @@ private static int[] CalculateColumnWidths(LlmMarkdownRenderer renderer, Table t
352
333
// Process all rows to find maximum width for each column
353
334
foreach ( var row in table . Cast < TableRow > ( ) )
354
335
{
355
- var cellIndex = 0 ;
356
- foreach ( var cell in row . Cast < TableCell > ( ) )
336
+ for ( var cellIndex = 0 ; cellIndex < row . Count ; cellIndex ++ )
357
337
{
338
+ var cell = row [ cellIndex ] as TableCell ;
358
339
// Capture cell content
359
- var content = DocumentationObjectPoolProvider . UseLlmMarkdownRenderer ( renderer . BuildContext , cell . Descendants ( ) . OfType < Inline > ( ) , static ( tmpRenderer , obj ) =>
360
- {
361
- foreach ( var inline in obj )
362
- tmpRenderer . Write ( inline ) ;
363
- } ) ;
340
+ var content = RenderTableCellContent ( renderer , cell ! ) ;
364
341
365
342
// Update width if this cell is wider
366
343
widths [ cellIndex ] = Math . Max ( widths [ cellIndex ] , content . Length ) ;
367
- cellIndex ++ ;
368
344
}
369
345
}
370
346
371
347
return widths ;
372
348
}
349
+
350
+ /// <summary>
351
+ /// Renders the inline content of a table cell to plain text
352
+ /// </summary>
353
+ private static string RenderTableCellContent ( LlmMarkdownRenderer renderer , TableCell cell ) =>
354
+ DocumentationObjectPoolProvider . UseLlmMarkdownRenderer (
355
+ renderer . BuildContext ,
356
+ cell . Descendants ( ) . OfType < Inline > ( ) ,
357
+ static ( tmpRenderer , obj ) =>
358
+ {
359
+ foreach ( var inline in obj )
360
+ tmpRenderer . Write ( inline ) ;
361
+ } ) ;
373
362
}
374
363
375
364
public class LlmDirectiveRenderer : MarkdownObjectRenderer < LlmMarkdownRenderer , DirectiveBlock >
0 commit comments