public static string CreateTableRowsFromValues(IEnumerable <MemberInfo> memberInfos, IEnumerable source, IRenderingEngine engine, bool emptyFirstCell = false) { var nullRendering = new PlainTextRendering("null"); var rowsBuffer = new StringBuilder(); foreach (var element in source) { rowsBuffer.AppendLine("\t<tr>"); if (emptyFirstCell) { rowsBuffer.AppendLine("\t\t<td></td>"); } CreateTableRow(memberInfos, engine, element, nullRendering, rowsBuffer); rowsBuffer.AppendLine("\t</tr>"); } return(rowsBuffer.ToString()); }
public static string CreateTableRowsFromValues(IEnumerable <MemberInfo> memberInfos, IEnumerable <KeyValuePair <object, object> > source, IRenderingEngine engine, bool emptyFirstCell = false) { var nullRendering = new PlainTextRendering("null"); var rowsBuffer = new StringBuilder(); foreach (var(key, element) in source.Select(e => (e.Key, e.Value))) { rowsBuffer.AppendLine("\t<tr>"); if (emptyFirstCell) { rowsBuffer.AppendLine("\t\t<td></td>"); } var keyRenderer = engine.TryFindRenderer(key.GetType()); var keyRendering = keyRenderer.Render(key, engine); rowsBuffer.AppendLine($"\t\t<td>{keyRendering?.Content ?? string.Empty}</td>"); CreateTableRow(memberInfos, engine, element, nullRendering, rowsBuffer); rowsBuffer.AppendLine("\t</tr>"); } return(rowsBuffer.ToString()); }