private void LiWithHeader(StringBuilder sb, string header, IEnumerable <string> messages) { var enumerable = messages as string[] ?? messages.ToArray(); if (!enumerable.Any()) { return; } using (var h2 = new LazyHtml(sb, "h2")) { h2.Write(header); } using (var ul = new LazyHtml(sb, "ul")) { foreach (var message in enumerable) { using (var li = new LazyHtml(sb, "li")) { ul.Write(message); } } } }
public string ToHtml() { var sb = new StringBuilder(); using (var html = new LazyHtml(sb, "html")) { using (var body = new LazyHtml(sb, "body")) { using (var h1 = new LazyHtml(sb, "h1")) { h1.Write($"Build Report {DateTime.Now.ToString(CultureInfo.InvariantCulture)}"); } LiWithHeader(sb, "Warnings", _warnings); foreach (var content in _contents) { Content(sb, content); } foreach (var section in _sections.Where(s => s.Value.Messages.Any()).OrderByDescending(s => s.Value.Priority)) { LiWithHeader(sb, section.Key, section.Value.Messages); } LiWithHeader(sb, "Info", _infos); } } return(sb.ToString()); }
private void Content(StringBuilder sb, KeyValuePair <string, object[]> content) { if (content.Value.Length == 0) { return; } using (var h2 = new LazyHtml(sb, "h2")) { h2.Write(content.Key); } var properties = content.Value.First().GetType().GetProperties(); using (var table = new LazyHtml(sb, "table cellspacing=0 cellpadding=5")) { using (var trh = new LazyHtml(sb, "tr")) { foreach (var property in properties) { using (var tdh = new LazyHtml(sb, "td style=\"border: 1px solid gray\"")) { tdh.Write(property.Name); } } } foreach (var entity in content.Value) { using (var tr = new LazyHtml(sb, "tr")) { foreach (var property in properties) { using (var td = new LazyHtml(sb, "td style=\"border: 1px solid gray\"")) { var value = property.GetValue(entity); if (value != null) { td.Write(value.ToString()); } } } } } } }