private IEnumerable<string> EncodeRowGroups(List<HtmlTableRowGroup> rowGroups, string baseHeader, string diffHeader, string leftIdPrefix, string rightIdPrefix, string edgePrefix) { var left = new HtmlTable(leftIdPrefix, leftIdPrefix, "LeftTable"); var right = new HtmlTable(rightIdPrefix, rightIdPrefix, "RightTable"); var edge = new HtmlTable(edgePrefix, edgePrefix, "EdgeTable"); left.AddDiffHeader(); right.AddDiffHeader(); foreach (var rowGroup in rowGroups) { left.AddBody(rowGroup.Class + " Base"); right.AddBody(rowGroup.Class + " Diff"); edge.AddBody(rowGroup.Class + " Diff"); foreach (var line in rowGroup.Lines) { var id = line.Left.Id + "-" + line.Right.Id; left.AddCodeLine(line.Left.LineNumber, id, line.Left.Code); right.AddCodeLine(line.Right.LineNumber, id, line.Right.Code); edge.AddEdgeLine(line.Right.LineNumber, id); } left.EndBody(); right.EndBody(); edge.EndBody(); // Add Seperator line after every unchanged if (rowGroup.DiffType == DiffType.Unchanged) AddSeperators(rowGroup, left, right, edge); } left.End(); right.End(); edge.End(); var testMode = false; var containerTable = new HtmlTable("", "DiffView", "DiffTable", testMode); containerTable.AddContainerHeader("ContainerTable", baseHeader, diffHeader); containerTable.AddTables(left, right, edge); containerTable.End(testMode); return containerTable.Html; }