private void appendPart(StringBuilder sb, PartStatus status) { var id = createId(); sb.Append($@"<li> <a id=""{id}_button"" href=""#{id}"" onClick=""showHideChangelog('{id}'); return false;"">+</a> {pickTarget(status)}{Escape(status.Name)}{Escape(versionString(status))} <span id=""{id}_changelog"" style=""display: none;"">{renderChangelog(status)}</span> </li>"); }
private string versionString(PartStatus status) { if (status.Version == null) { return(""); } if (status.FirstFoundVersion == null || status.FirstFoundVersion == status.Version) { return($" v{status.Version}"); } return($" v{status.FirstFoundVersion} -> v{status.Version}"); }
private string pickTarget(PartStatus status) { if (status.wasObsoleted) { return(""); } if (status.wasAdded) { return("<b>(New)</b> "); } if (status.wasUpdated) { return("<b>(Updated)</b> "); } return(""); }
public void AddModule(PartStatus status) { if (processedModules.Contains(status.FullName)) { return; } processedModules.Add(status.FullName); if (status.wasMerged) { appendPart(mergedModules, status); } else if (status.wasObsoleted) { appendPart(obsoletedModules, status); } }
private string renderChangelog(PartStatus status) { if (status.Changelog == null) { return("<ul><li><i>No changelog available</i></li></ul>"); } var sb = new StringBuilder(); var split = status.Changelog.Split('\n'); Array.Reverse(split); foreach (var line in split.Select(x => x.Trim()).Where(x => x != "")) { sb.Append($"<li>{Escape(line)}</li>"); } return($"<ul>{sb}</ul>"); }