@@ -28,75 +28,67 @@ public class SemanticVersion : IFormattable, IComparable<SemanticVersion>, IEqua
28
28
29
29
public SemanticVersionBuildMetaData BuildMetaData { get ; init ; }
30
30
31
- public bool IsLabeledWith ( string value ) => PreReleaseTag . HasTag ( ) && PreReleaseTag . Name . IsEquivalentTo ( value ) ;
31
+ public bool IsLabeledWith ( string value ) => PreReleaseTag . HasTag ( ) && string . Equals ( PreReleaseTag . Name , value , StringComparison . OrdinalIgnoreCase ) ;
32
32
33
33
public bool IsMatchForBranchSpecificLabel ( string ? value )
34
34
=> PreReleaseTag . Name == string . Empty || value is null || IsLabeledWith ( value ) ;
35
35
36
36
public SemanticVersion ( long major = 0 , long minor = 0 , long patch = 0 )
37
37
{
38
- this . Major = major ;
39
- this . Minor = minor ;
40
- this . Patch = patch ;
41
- this . PreReleaseTag = new SemanticVersionPreReleaseTag ( ) ;
42
- this . BuildMetaData = new SemanticVersionBuildMetaData ( ) ;
38
+ Major = major ;
39
+ Minor = minor ;
40
+ Patch = patch ;
41
+ PreReleaseTag = new SemanticVersionPreReleaseTag ( ) ;
42
+ BuildMetaData = new SemanticVersionBuildMetaData ( ) ;
43
43
}
44
44
45
45
public SemanticVersion ( SemanticVersion semanticVersion )
46
46
{
47
47
semanticVersion . NotNull ( ) ;
48
48
49
- this . Major = semanticVersion . Major ;
50
- this . Minor = semanticVersion . Minor ;
51
- this . Patch = semanticVersion . Patch ;
49
+ Major = semanticVersion . Major ;
50
+ Minor = semanticVersion . Minor ;
51
+ Patch = semanticVersion . Patch ;
52
52
53
- this . PreReleaseTag = new SemanticVersionPreReleaseTag ( semanticVersion . PreReleaseTag ) ;
54
- this . BuildMetaData = new SemanticVersionBuildMetaData ( semanticVersion . BuildMetaData ) ;
53
+ PreReleaseTag = new SemanticVersionPreReleaseTag ( semanticVersion . PreReleaseTag ) ;
54
+ BuildMetaData = new SemanticVersionBuildMetaData ( semanticVersion . BuildMetaData ) ;
55
55
}
56
56
57
57
public bool Equals ( SemanticVersion ? obj )
58
58
{
59
59
if ( obj == null )
60
- {
61
60
return false ;
62
- }
63
- return this . Major == obj . Major && this . Minor == obj . Minor && this . Patch == obj . Patch && this . PreReleaseTag == obj . PreReleaseTag && this . BuildMetaData == obj . BuildMetaData ;
61
+ return Major == obj . Major && Minor == obj . Minor && Patch == obj . Patch && PreReleaseTag == obj . PreReleaseTag && BuildMetaData == obj . BuildMetaData ;
64
62
}
65
63
66
64
public bool IsEmpty ( ) => Equals ( Empty ) ;
67
65
68
66
public override bool Equals ( object ? obj )
69
67
{
70
68
if ( obj is null )
71
- {
72
69
return false ;
73
- }
74
70
if ( ReferenceEquals ( this , obj ) )
75
- {
76
71
return true ;
77
- }
78
72
return obj . GetType ( ) == GetType ( ) && Equals ( ( SemanticVersion ) obj ) ;
79
73
}
80
74
81
75
public override int GetHashCode ( )
82
76
{
83
77
unchecked
84
78
{
85
- var hashCode = this . Major . GetHashCode ( ) ;
86
- hashCode = ( hashCode * 397 ) ^ this . Minor . GetHashCode ( ) ;
87
- hashCode = ( hashCode * 397 ) ^ this . Patch . GetHashCode ( ) ;
88
- hashCode = ( hashCode * 397 ) ^ this . PreReleaseTag . GetHashCode ( ) ;
89
- hashCode = ( hashCode * 397 ) ^ this . BuildMetaData . GetHashCode ( ) ;
79
+ var hashCode = Major . GetHashCode ( ) ;
80
+ hashCode = hashCode * 397 ^ Minor . GetHashCode ( ) ;
81
+ hashCode = hashCode * 397 ^ Patch . GetHashCode ( ) ;
82
+ hashCode = hashCode * 397 ^ PreReleaseTag . GetHashCode ( ) ;
83
+ hashCode = hashCode * 397 ^ BuildMetaData . GetHashCode ( ) ;
90
84
return hashCode ;
91
85
}
92
86
}
93
87
94
88
public static bool operator == ( SemanticVersion ? v1 , SemanticVersion ? v2 )
95
89
{
96
90
if ( v1 is null )
97
- {
98
91
return v2 is null ;
99
- }
100
92
return v1 . Equals ( v2 ) ;
101
93
}
102
94
@@ -225,39 +217,29 @@ private static bool TryParseLoose(string version, [NotNullWhen(true)] out Semant
225
217
public int CompareTo ( SemanticVersion ? value , bool includePrerelease )
226
218
{
227
219
if ( value == null )
228
- {
229
220
return 1 ;
230
- }
231
- if ( this . Major != value . Major )
221
+ if ( Major != value . Major )
232
222
{
233
- if ( this . Major > value . Major )
234
- {
223
+ if ( Major > value . Major )
235
224
return 1 ;
236
- }
237
225
return - 1 ;
238
226
}
239
- if ( this . Minor != value . Minor )
227
+ if ( Minor != value . Minor )
240
228
{
241
- if ( this . Minor > value . Minor )
242
- {
229
+ if ( Minor > value . Minor )
243
230
return 1 ;
244
- }
245
231
return - 1 ;
246
232
}
247
- if ( this . Patch != value . Patch )
233
+ if ( Patch != value . Patch )
248
234
{
249
- if ( this . Patch > value . Patch )
250
- {
235
+ if ( Patch > value . Patch )
251
236
return 1 ;
252
- }
253
237
return - 1 ;
254
238
}
255
- if ( includePrerelease && this . PreReleaseTag != value . PreReleaseTag )
239
+ if ( includePrerelease && PreReleaseTag != value . PreReleaseTag )
256
240
{
257
- if ( this . PreReleaseTag > value . PreReleaseTag )
258
- {
241
+ if ( PreReleaseTag > value . PreReleaseTag )
259
242
return 1 ;
260
- }
261
243
return - 1 ;
262
244
}
263
245
@@ -277,7 +259,7 @@ public int CompareTo(SemanticVersion? value, bool includePrerelease)
277
259
/// </summary>
278
260
public string ToString ( string ? format , IFormatProvider ? formatProvider )
279
261
{
280
- if ( format . IsNullOrEmpty ( ) )
262
+ if ( string . IsNullOrEmpty ( format ) )
281
263
format = "s" ;
282
264
283
265
if ( formatProvider ? . GetFormat ( GetType ( ) ) is ICustomFormatter formatter )
@@ -288,22 +270,22 @@ public string ToString(string? format, IFormatProvider? formatProvider)
288
270
switch ( format )
289
271
{
290
272
case "j" :
291
- return $ "{ this . Major } .{ this . Minor } .{ this . Patch } ";
273
+ return $ "{ Major } .{ Minor } .{ Patch } ";
292
274
case "s" :
293
- return this . PreReleaseTag . HasTag ( ) ? $ "{ ToString ( "j" ) } -{ this . PreReleaseTag } " : ToString ( "j" ) ;
275
+ return PreReleaseTag . HasTag ( ) ? $ "{ ToString ( "j" ) } -{ PreReleaseTag } " : ToString ( "j" ) ;
294
276
case "t" :
295
- return this . PreReleaseTag . HasTag ( ) ? $ "{ ToString ( "j" ) } -{ this . PreReleaseTag . ToString ( "t" ) } " : ToString ( "j" ) ;
277
+ return PreReleaseTag . HasTag ( ) ? $ "{ ToString ( "j" ) } -{ PreReleaseTag . ToString ( "t" ) } " : ToString ( "j" ) ;
296
278
case "f" :
297
279
{
298
- var buildMetadata = this . BuildMetaData . ToString ( ) ;
280
+ var buildMetadata = BuildMetaData . ToString ( ) ;
299
281
300
- return ! buildMetadata . IsNullOrEmpty ( ) ? $ "{ ToString ( "s" ) } +{ buildMetadata } " : ToString ( "s" ) ;
282
+ return ! string . IsNullOrEmpty ( buildMetadata ) ? $ "{ ToString ( "s" ) } +{ buildMetadata } " : ToString ( "s" ) ;
301
283
}
302
284
case "i" :
303
285
{
304
- var buildMetadata = this . BuildMetaData . ToString ( "f" ) ;
286
+ var buildMetadata = BuildMetaData . ToString ( "f" ) ;
305
287
306
- return ! buildMetadata . IsNullOrEmpty ( ) ? $ "{ ToString ( "s" ) } +{ buildMetadata } " : ToString ( "s" ) ;
288
+ return ! string . IsNullOrEmpty ( buildMetadata ) ? $ "{ ToString ( "s" ) } +{ buildMetadata } " : ToString ( "s" ) ;
307
289
}
308
290
default :
309
291
throw new FormatException ( $ "Unknown format '{ format } '.") ;
@@ -343,10 +325,8 @@ public SemanticVersion IncrementVersion(VersionField incrementStrategy, string?
343
325
var preReleaseTagNumber = PreReleaseTag . Number ;
344
326
345
327
if ( PreReleaseTag . HasTag ( ) )
346
- {
347
328
preReleaseTagNumber ++ ;
348
- }
349
- else if ( ! label . IsNullOrEmpty ( ) )
329
+ else if ( ! string . IsNullOrEmpty ( label ) )
350
330
{
351
331
preReleaseTagNumber = 1 ;
352
332
preReleaseTagName = label ;
0 commit comments