Skip to content

Commit ec38677

Browse files
authored
Merge pull request #55 from ian-craig/safer-table-generation
Don't crash when tables have empty rows
2 parents a9ef3d6 + fa9f416 commit ec38677

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/ReverseMarkdown.Test/ConverterTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,24 @@ public void WhenTable_CellContainsBr_PreserveBrAndConvertToGFMTable()
903903
});
904904
}
905905

906+
[Fact]
907+
public void WhenTable_HasEmptyRow_DropsEmptyRow()
908+
{
909+
const string html =
910+
@"<table><tr><td>abc</td></tr><tr></tr></table>";
911+
var expected = $"{Environment.NewLine}{Environment.NewLine}";
912+
expected += $"| <!----> |{Environment.NewLine}";
913+
expected += $"| --- |{Environment.NewLine}";
914+
expected += $"| abc |{Environment.NewLine}";
915+
expected += Environment.NewLine;
916+
917+
CheckConversion(html, expected, new Config
918+
{
919+
GithubFlavored = true,
920+
TableWithoutHeaderRowHandling = Config.TableWithoutHeaderRowHandlingOption.EmptyRow,
921+
});
922+
}
923+
906924
[Fact]
907925
public void When_BR_With_GitHubFlavored_Config_ThenConvertToGFM_BR()
908926
{

src/ReverseMarkdown/Converters/Table.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ private static string EmptyHeader(HtmlNode node)
5151
underlineRowItems.Add("---");
5252
}
5353

54-
var headerRow = $"| {headerRowItems.Aggregate((item1, item2) => item1 + " | " + item2)} |{Environment.NewLine}";
55-
var underlineRow = $"| {underlineRowItems.Aggregate((item1, item2) => item1 + " | " + item2)} |{Environment.NewLine}";
54+
var headerRow = $"| {string.Join(" | ", headerRowItems)} |{Environment.NewLine}";
55+
var underlineRow = $"| {string.Join(" | ", underlineRowItems)} |{Environment.NewLine}";
5656

5757
return headerRow + underlineRow;
5858
}

src/ReverseMarkdown/Converters/Tr.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ public override string Convert(HtmlNode node)
1717
{
1818
var content = TreatChildren(node).TrimEnd();
1919
var underline = "";
20+
21+
if (string.IsNullOrWhiteSpace(content))
22+
{
23+
return "";
24+
}
2025

2126
if (IsTableHeaderRow(node) || UseFirstRowAsHeaderRow(node))
2227
{
@@ -61,7 +66,7 @@ private string UnderlineFor(HtmlNode node)
6166
cols.Add("---");
6267
}
6368

64-
var colsAggregated = cols.Aggregate((item1, item2) => item1 + " | " + item2);
69+
var colsAggregated = string.Join(" | ", cols);
6570

6671
return $"| {colsAggregated} |{Environment.NewLine}";
6772
}

0 commit comments

Comments
 (0)