fix duplicate semver regex
This commit is contained in:
parent
51f5be1e74
commit
24428d4405
|
@ -8,20 +8,6 @@ namespace StardewModdingAPI.Common
|
|||
/// <remarks>The implementation is defined by Semantic Version 2.0 (http://semver.org/).</remarks>
|
||||
internal class SemanticVersionImpl
|
||||
{
|
||||
/*********
|
||||
** Properties
|
||||
*********/
|
||||
/// <summary>A regular expression matching a semantic version string.</summary>
|
||||
/// <remarks>
|
||||
/// This pattern is derived from the BNF documentation in the <a href="https://github.com/mojombo/semver">semver repo</a>,
|
||||
/// with three important deviations intended to support Stardew Valley mod conventions:
|
||||
/// - allows short-form "x.y" versions;
|
||||
/// - allows hyphens in prerelease tags as synonyms for dots (like "-unofficial-update.3");
|
||||
/// - doesn't allow '+build' suffixes.
|
||||
/// </remarks>
|
||||
private static readonly Regex Regex = new Regex(@"^(?>(?<major>0|[1-9]\d*))\.(?>(?<minor>0|[1-9]\d*))(?>(?:\.(?<patch>0|[1-9]\d*))?)(?:-(?<prerelease>(?>[a-z0-9]+[\-\.]?)+))?$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.ExplicitCapture);
|
||||
|
||||
|
||||
/*********
|
||||
** Accessors
|
||||
*********/
|
||||
|
@ -37,6 +23,15 @@ namespace StardewModdingAPI.Common
|
|||
/// <summary>An optional prerelease tag.</summary>
|
||||
public string Tag { get; }
|
||||
|
||||
/// <summary>A regular expression matching a semantic version string.</summary>
|
||||
/// <remarks>
|
||||
/// This pattern is derived from the BNF documentation in the <a href="https://github.com/mojombo/semver">semver repo</a>,
|
||||
/// with three important deviations intended to support Stardew Valley mod conventions:
|
||||
/// - allows short-form "x.y" versions;
|
||||
/// - allows hyphens in prerelease tags as synonyms for dots (like "-unofficial-update.3");
|
||||
/// - doesn't allow '+build' suffixes.
|
||||
/// </remarks>
|
||||
internal static readonly Regex Regex = new Regex(@"^(?>(?<major>0|[1-9]\d*))\.(?>(?<minor>0|[1-9]\d*))(?>(?:\.(?<patch>0|[1-9]\d*))?)(?:-(?<prerelease>(?>[a-z0-9]+[\-\.]?)+))?$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.ExplicitCapture);
|
||||
|
||||
/*********
|
||||
** Public methods
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Microsoft.AspNetCore.Routing.Constraints;
|
||||
using StardewModdingAPI.Common;
|
||||
|
||||
namespace StardewModdingAPI.Web.Framework
|
||||
{
|
||||
|
@ -10,6 +11,6 @@ namespace StardewModdingAPI.Web.Framework
|
|||
*********/
|
||||
/// <summary>Construct an instance.</summary>
|
||||
public VersionConstraint()
|
||||
: base(@"^v(?>(?<major>0|[1-9]\d*))\.(?>(?<minor>0|[1-9]\d*))(?>(?:\.(?<patch>0|[1-9]\d*))?)(?:-(?<prerelease>(?>[a-z0-9]+[\-\.]?)+))?$") { }
|
||||
: base(SemanticVersionImpl.Regex) { }
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue