@@ -6,16 +6,17 @@ class Semver
66 PRE_RELEASE_DELIMITER = '-'
77 VALUE_DELIMITER = '.'
88
9- attr_reader :major , :minor , :patch , :pre_release , :is_stable , :old_version
9+ attr_reader :major , :minor , :patch , :pre_release , :is_stable , :version
1010
1111 def initialize ( version )
1212 @major = 0
1313 @minor = 0
1414 @patch = 0
1515 @pre_release = [ ]
1616 @is_stable = false
17- @old_version = version
18- parse
17+ @version = ''
18+ @metadata = ''
19+ parse ( version )
1920 end
2021
2122 #
@@ -26,21 +27,25 @@ def initialize(version)
2627 # @return [type] Semver instance
2728 def self . build ( version , logger )
2829 new ( version )
29- rescue RuntimeError => e
30- logger . warn ( "Failed to parse Semver data: #{ e } " )
30+ rescue NoMethodError => e
31+ logger . error ( "Failed to parse Semver data, incorrect data type: #{ e } " )
32+ nil
33+ rescue StandardError => e
34+ logger . error ( "Failed to parse Semver data: #{ e } " )
3135 nil
3236 end
3337
3438 #
35- # Check if there is any metadata characters in self._old_version .
39+ # Check if there is any metadata characters in version .
3640 #
3741 # @return [type] String semver without the metadata
3842 #
39- def remove_metadata_if_exists
40- index = @ old_version. index ( METADATA_DELIMITER )
41- return @ old_version if index . nil?
43+ def remove_metadata_if_exists ( old_version )
44+ index = old_version . index ( METADATA_DELIMITER )
45+ return old_version if index . nil?
4246
43- @old_version [ 0 , index ]
47+ @metadata = old_version [ index + 1 , old_version . length ]
48+ old_version [ 0 , index ]
4449 end
4550
4651 # Compare the current Semver object to a given Semver object, return:
@@ -52,7 +57,7 @@ def remove_metadata_if_exists
5257 #
5358 # @returns [Integer] based on comparison
5459 def compare ( to_compare )
55- return 0 if @old_version == to_compare . old_version
60+ return 0 if @version == to_compare . version
5661
5762 # Compare major, minor, and patch versions numerically
5863 return compare_attributes ( to_compare ) if compare_attributes ( to_compare ) != 0
@@ -68,10 +73,10 @@ def integer?(value)
6873 end
6974
7075 #
71- # Parse the string in self._old_version to update the other internal variables
76+ # Parse the string in version to update the other internal variables
7277 #
73- def parse
74- without_metadata = remove_metadata_if_exists
78+ def parse ( old_version )
79+ without_metadata = remove_metadata_if_exists ( old_version )
7580
7681 index = without_metadata . index ( PRE_RELEASE_DELIMITER )
7782 if index . nil?
@@ -100,6 +105,9 @@ def assign_major_minor_and_patch(version)
100105 @major = parts [ 0 ] . to_i
101106 @minor = parts [ 1 ] . to_i
102107 @patch = parts [ 2 ] . to_i
108+ @version = "#{ @major } #{ VALUE_DELIMITER } #{ @minor } #{ VALUE_DELIMITER } #{ @patch } "
109+ @version += "#{ PRE_RELEASE_DELIMITER } #{ @pre_release . join ( '.' ) } " unless @pre_release . empty?
110+ @version += "#{ METADATA_DELIMITER } #{ @metadata } " unless @metadata . empty?
103111 end
104112
105113 #
0 commit comments