From bebc997a65e42201a81cda4986c9a044f0000711 Mon Sep 17 00:00:00 2001 From: FroggieFrog Date: Mon, 26 Feb 2024 16:18:10 +0100 Subject: [PATCH] Parse release notes as Markdown (#81) * parse release notes as markdown * update dependency Markdig * PR feedback --- Directory.Packages.props | 2 +- src/BaGetter.Web/Pages/Package.cshtml | 2 +- src/BaGetter.Web/Pages/Package.cshtml.cs | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 2539e4b2f..240dedd7a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -27,7 +27,7 @@ - + diff --git a/src/BaGetter.Web/Pages/Package.cshtml b/src/BaGetter.Web/Pages/Package.cshtml index ea8324621..61988b631 100644 --- a/src/BaGetter.Web/Pages/Package.cshtml +++ b/src/BaGetter.Web/Pages/Package.cshtml @@ -117,7 +117,7 @@ else @if (!string.IsNullOrEmpty(Model.Package.ReleaseNotes)) { ExpandableSection("Release Notes", "ms-Icon--ReadingMode", expanded: false, - @
@Model.Package.ReleaseNotes
); + @
@Model.ParsedReleaseNotes
); } @{ ExpandableSection("Dependencies", "ms-Icon--Packages", expanded: false, diff --git a/src/BaGetter.Web/Pages/Package.cshtml.cs b/src/BaGetter.Web/Pages/Package.cshtml.cs index ff2589abb..843539b6d 100644 --- a/src/BaGetter.Web/Pages/Package.cshtml.cs +++ b/src/BaGetter.Web/Pages/Package.cshtml.cs @@ -56,6 +56,8 @@ public PackageModel( public HtmlString Readme { get; private set; } + public HtmlString ParsedReleaseNotes { get; private set; } + public string IconUrl { get; private set; } public string LicenseUrl { get; private set; } public string PackageDownloadUrl { get; private set; } @@ -103,6 +105,8 @@ public async Task OnGetAsync(string id, string version, CancellationToken cancel Readme = await GetReadmeHtmlStringOrNullAsync(Package.Id, packageVersion, cancellationToken); } + ParsedReleaseNotes = ParseReleaseNotes(); + IconUrl = Package.HasEmbeddedIcon ? _url.GetPackageIconDownloadUrl(Package.Id, packageVersion) : Package.IconUrlString; @@ -208,6 +212,17 @@ private async Task GetReadmeHtmlStringOrNullAsync( return new HtmlString(readmeHtml); } + private HtmlString ParseReleaseNotes() + { + if (string.IsNullOrWhiteSpace(Package.ReleaseNotes)) + { + return HtmlString.Empty; + } + + var releseNotesHtml = Markdown.ToHtml(Package.ReleaseNotes, MarkdownPipeline); + return new HtmlString(releseNotesHtml); + } + public class DependencyGroupModel { public string Name { get; set; }