private static string RenderRows(Template rowTemplate, List <Line> lines, string indentBegin, string indentEnd) { string output = ""; foreach (var line in lines) { string left = XmlEscape(line.Left); string right = XmlEscape(line.Right); if (line.EntryType == EntryType.Changed) { List <StringDiff> streaks = StringDiff.FindDifferences(left, right); left = RenderStreaks(streaks, StreakType.Unchanged, StreakType.Removed); right = RenderStreaks(streaks, StreakType.Unchanged, StreakType.Added); } output += rowTemplate.Render(new { LineType = line.EntryType.ToString(), LineTypeLc = line.EntryType.ToString().ToLower(), IndentBegin = indentBegin, IndentEnd = indentEnd, Left = left, Right = right, }); } return(output); }