Browse Source

docs: created IVersionHelper

pull/4782/head
Yunus Emre Kalkan 6 years ago
parent
commit
48db596f97
  1. 19
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs
  2. 8
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs
  3. 11
      modules/docs/src/Volo.Docs.Web/Utils/VersionHelper.cs
  4. 14
      modules/docs/src/Volo.Docs.Web/Version/IVersionHelper.cs
  5. 52
      modules/docs/src/Volo.Docs.Web/Version/SemanticVersionHelper.cs

19
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

@ -18,6 +18,7 @@ using Volo.Docs.Models;
using Volo.Docs.Projects;
using Volo.Docs.Utils;
using NuGet.Versioning;
using Volo.Docs.Version;
namespace Volo.Docs.Pages.Documents.Project
{
@ -78,6 +79,7 @@ namespace Volo.Docs.Pages.Documents.Project
private readonly IDocumentToHtmlConverterFactory _documentToHtmlConverterFactory;
private readonly IProjectAppService _projectAppService;
private readonly IDocumentSectionRenderer _documentSectionRenderer;
private readonly IVersionHelper _versionHelper;
private readonly DocsUiOptions _uiOptions;
public IndexModel(
@ -85,7 +87,8 @@ namespace Volo.Docs.Pages.Documents.Project
IDocumentToHtmlConverterFactory documentToHtmlConverterFactory,
IProjectAppService projectAppService,
IOptions<DocsUiOptions> options,
IDocumentSectionRenderer documentSectionRenderer)
IDocumentSectionRenderer documentSectionRenderer,
IVersionHelper versionHelper)
{
ObjectMapperContext = typeof(DocsWebModule);
@ -93,6 +96,7 @@ namespace Volo.Docs.Pages.Documents.Project
_documentToHtmlConverterFactory = documentToHtmlConverterFactory;
_projectAppService = projectAppService;
_documentSectionRenderer = documentSectionRenderer;
_versionHelper = versionHelper;
_uiOptions = options.Value;
}
@ -252,16 +256,15 @@ namespace Volo.Docs.Pages.Documents.Project
}
var output = await _projectAppService.GetVersionsAsync(Project.ShortName);
var versions = output.Items
.OrderByDescending(i => SemanticVersion.Parse(i.Name), new VersionComparer())
var versions = _versionHelper.OrderByDescending(output.Items.ToList())
.Select(v => new VersionInfoViewModel(v.DisplayName, v.Name))
.ToList();
SetLatestVersionBranchName(versions);
if (versions.Any())
{
LatestStableVersionInfo = versions.FirstOrDefault(v => !VersionHelper.IsPreRelease(v.Version)) ?? versions.First();
LatestStableVersionInfo = versions.FirstOrDefault(v => !_versionHelper.IsPreRelease(v.Version)) ?? versions.First();
SetLatestVersionBranchName(versions);
LatestStableVersionInfo.DisplayText = $"{LatestStableVersionInfo.DisplayText} ({DocsAppConsts.Latest})";
@ -287,6 +290,8 @@ namespace Volo.Docs.Pages.Documents.Project
}
else
{
SetLatestVersionBranchName(versions);
LatestStableVersionInfo = new VersionInfoViewModel(
$"{DocsAppConsts.Latest}",
DocsAppConsts.Latest,
@ -305,7 +310,7 @@ namespace Volo.Docs.Pages.Documents.Project
{
if (versions.Any() && !string.IsNullOrEmpty(Project.LatestVersionBranchName))
{
versions.First(v=> !SemanticVersion.Parse(v.Version).IsPrerelease).Version = Project.LatestVersionBranchName;
versions.First(v=> !_versionHelper.IsPreRelease(v.Version)).Version = Project.LatestVersionBranchName;
}
}

8
modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs

@ -11,6 +11,7 @@ using Volo.Docs.HtmlConverting;
using Volo.Docs.Models;
using Volo.Docs.Projects;
using Volo.Docs.Utils;
using Volo.Docs.Version;
namespace Volo.Docs.Pages.Documents
{
@ -33,14 +34,17 @@ namespace Volo.Docs.Pages.Documents
private readonly IProjectAppService _projectAppService;
private readonly IDocumentAppService _documentAppService;
private readonly HtmlEncoder _encoder;
private readonly IVersionHelper _versionHelper;
public SearchModel(IProjectAppService projectAppService,
IDocumentAppService documentAppService,
HtmlEncoder encoder)
HtmlEncoder encoder,
IVersionHelper versionHelper)
{
_projectAppService = projectAppService;
_documentAppService = documentAppService;
_encoder = encoder;
_versionHelper = versionHelper;
}
public List<DocumentSearchOutput> SearchOutputs { get; set; } = new List<DocumentSearchOutput>();
@ -63,7 +67,7 @@ namespace Volo.Docs.Pages.Documents
if (versions.Any() && string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase))
{
Version = string.IsNullOrEmpty(Project.LatestVersionBranchName) ?
(versions.FirstOrDefault(v=> !VersionHelper.IsPreRelease(v.Name)) ?? versions.First()).Name :
(versions.FirstOrDefault(v=> !_versionHelper.IsPreRelease(v.Name)) ?? versions.First()).Name :
Project.LatestVersionBranchName;
}

11
modules/docs/src/Volo.Docs.Web/Utils/VersionHelper.cs

@ -1,11 +0,0 @@
namespace Volo.Docs.Utils
{
public static class VersionHelper
{
public static bool IsPreRelease(string version)
{
return (version?.Split("-").Length ?? 0) > 1;
}
}
}

14
modules/docs/src/Volo.Docs.Web/Version/IVersionHelper.cs

@ -0,0 +1,14 @@
using System.Collections.Generic;
using Volo.Docs.Projects;
namespace Volo.Docs.Version
{
public interface IVersionHelper
{
List<string> OrderByDescending(List<string> versions);
List<VersionInfoDto> OrderByDescending(List<VersionInfoDto> versions);
bool IsPreRelease(string version);
}
}

52
modules/docs/src/Volo.Docs.Web/Version/SemanticVersionHelper.cs

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NuGet.Versioning;
using Volo.Abp.DependencyInjection;
using Volo.Docs.Projects;
namespace Volo.Docs.Version
{
public class SemanticVersionHelper : IVersionHelper, ITransientDependency
{
public List<string> OrderByDescending(List<string> versions)
{
return versions.OrderByDescending(v=> SemanticVersion.Parse(NormalizeVersion(v)), new VersionComparer()).ToList();
}
public List<VersionInfoDto> OrderByDescending(List<VersionInfoDto> versions)
{
return versions.OrderByDescending(v => SemanticVersion.Parse(NormalizeVersion(v.Name)), new VersionComparer()).ToList();
}
public bool IsPreRelease(string version)
{
return SemanticVersion.Parse(NormalizeVersion(version)).IsPrerelease;
}
private string NormalizeVersion(string version)
{
version = version.RemovePreFix("v");
var normalizedVersion = "";
var versionParts = version.Split("-");
if (versionParts[0].Split(".").Length > 3)
{
normalizedVersion = string.Join(".",versionParts[0].Split(".").Take(3));
}
else
{
normalizedVersion = versionParts[0];
}
if (versionParts.Length > 1)
{
return normalizedVersion + "-" + string.Join("-", versionParts.Skip(1));
}
return normalizedVersion;
}
}
}
Loading…
Cancel
Save