Module: Vers::OpenSSLVersion
Defined Under Namespace
Classes: Parsed
Instance Method Summary collapse
- #compare(left, right) ⇒ Object
- #normalize(value) ⇒ Object
- #parse(value) ⇒ Object
- #prerelease?(value) ⇒ Boolean
- #prerelease_patch?(patch) ⇒ Boolean
- #valid?(value) ⇒ Boolean
- #version_three_or_newer?(left, right) ⇒ Boolean
Instance Method Details
#compare(left, right) ⇒ Object
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
# File 'lib/vers/special_version.rb', line 204 def compare(left, right) parsed_left = parse(left) parsed_right = parse(right) return Version.compare(left, right) unless parsed_left && parsed_right return SemverVersion.compare(left, right) if version_three_or_newer?(parsed_left, parsed_right) parsed_left.core.zip(parsed_right.core).each do |left_part, right_part| comparison = VersionComparison.compare_numbers(left_part, right_part) return comparison unless comparison.zero? end left_prerelease = prerelease_patch?(parsed_left.patch) right_prerelease = prerelease_patch?(parsed_right.patch) return -1 if left_prerelease && !right_prerelease return 1 if !left_prerelease && right_prerelease parsed_left.patch <=> parsed_right.patch end |
#normalize(value) ⇒ Object
247 248 249 |
# File 'lib/vers/special_version.rb', line 247 def normalize(value) value.to_s.strip end |
#parse(value) ⇒ Object
223 224 225 226 227 228 229 230 231 232 |
# File 'lib/vers/special_version.rb', line 223 def parse(value) parts = value.to_s.split(".", 3) return nil unless parts.length == 3 return nil unless parts[0].match?(/\A\d+\z/) && parts[1].match?(/\A\d+\z/) match = /\A(\d+)(.*)\z/.match(parts[2]) return nil unless match Parsed.new([parts[0], parts[1], match[1]].freeze, match[2]) end |
#prerelease?(value) ⇒ Boolean
251 252 253 254 255 256 257 258 259 260 |
# File 'lib/vers/special_version.rb', line 251 def prerelease?(value) parsed = parse(value.to_s.strip) return false unless parsed if VersionComparison.compare_numbers(parsed.core[0], "3") >= 0 parsed.patch.start_with?("-") else prerelease_patch?(parsed.patch) end end |
#prerelease_patch?(patch) ⇒ Boolean
239 240 241 |
# File 'lib/vers/special_version.rb', line 239 def prerelease_patch?(patch) patch.start_with?("-alpha", "-beta") end |
#valid?(value) ⇒ Boolean
243 244 245 |
# File 'lib/vers/special_version.rb', line 243 def valid?(value) !parse(value.to_s.strip).nil? end |
#version_three_or_newer?(left, right) ⇒ Boolean
234 235 236 237 |
# File 'lib/vers/special_version.rb', line 234 def version_three_or_newer?(left, right) VersionComparison.compare_numbers(left.core[0], "3") >= 0 && VersionComparison.compare_numbers(right.core[0], "3") >= 0 end |