Module: Vers::CargoVersion
Instance Method Summary collapse
- #compare(left, right) ⇒ Object
- #compare_build(left, right) ⇒ Object
- #compare_build_identifier(left, right) ⇒ Object
- #normalize(value) ⇒ Object
- #prerelease?(value) ⇒ Boolean
- #valid?(value) ⇒ Boolean
Instance Method Details
#compare(left, right) ⇒ Object
152 153 154 155 156 157 158 159 160 161 |
# File 'lib/vers/semver_version.rb', line 152 def compare(left, right) comparison = SemverVersion.compare(left, right) return comparison unless comparison.zero? parsed_left = SemverVersion.parse(left) parsed_right = SemverVersion.parse(right) return comparison unless parsed_left && parsed_right compare_build(parsed_left.build, parsed_right.build) end |
#compare_build(left, right) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/vers/semver_version.rb', line 163 def compare_build(left, right) return 0 if left == right return -1 if left.empty? return 1 if right.empty? left_parts = left.split(".", -1) right_parts = right.split(".", -1) left_parts.zip(right_parts).each do |left_part, right_part| return 1 if right_part.nil? comparison = compare_build_identifier(left_part, right_part) return comparison unless comparison.zero? end left_parts.length <=> right_parts.length end |
#compare_build_identifier(left, right) ⇒ Object
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/vers/semver_version.rb', line 180 def compare_build_identifier(left, right) left_numeric = VersionComparison.numeric?(left) right_numeric = VersionComparison.numeric?(right) return -1 if left_numeric && !right_numeric return 1 if !left_numeric && right_numeric return left <=> right unless left_numeric normalized_left = VersionComparison.normalize_number(left) normalized_right = VersionComparison.normalize_number(right) comparison = normalized_left.length <=> normalized_right.length return comparison unless comparison.zero? comparison = normalized_left <=> normalized_right return comparison unless comparison.zero? left.length <=> right.length end |
#normalize(value) ⇒ Object
202 203 204 |
# File 'lib/vers/semver_version.rb', line 202 def normalize(value) SemverVersion.normalize(value.to_s.strip) end |
#prerelease?(value) ⇒ Boolean
206 207 208 |
# File 'lib/vers/semver_version.rb', line 206 def prerelease?(value) SemverVersion.prerelease?(value.to_s.strip) end |
#valid?(value) ⇒ Boolean
198 199 200 |
# File 'lib/vers/semver_version.rb', line 198 def valid?(value) SemverVersion.valid?(value.to_s.strip) end |