2020-10-10 14:16:11 +02:00
|
|
|
# typed: true
|
2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
require "singleton"
|
|
|
|
|
2016-11-03 16:28:16 -07:00
|
|
|
class Version
|
2021-01-16 11:49:01 -08:00
|
|
|
# A pseudo-version representing the absence of a version.
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
class NullVersion < Version
|
2020-10-20 12:03:48 +02:00
|
|
|
extend T::Sig
|
|
|
|
|
2016-11-03 16:28:16 -07:00
|
|
|
include Comparable
|
2021-01-16 11:49:01 -08:00
|
|
|
include Singleton
|
2016-11-03 16:28:16 -07:00
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.params(_other: T.untyped).returns(Integer) }
|
2016-11-03 16:28:16 -07:00
|
|
|
def <=>(_other)
|
|
|
|
-1
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.params(_other: T.untyped).returns(T::Boolean) }
|
2016-11-03 16:28:16 -07:00
|
|
|
def eql?(_other)
|
|
|
|
# Makes sure that the same instance of Version::NULL
|
|
|
|
# will never equal itself; normally Comparable#==
|
|
|
|
# will return true for this regardless of the return
|
|
|
|
# value of #<=>
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(T::Boolean) }
|
2016-11-03 16:28:16 -07:00
|
|
|
def detected_from_url?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(T::Boolean) }
|
2016-11-03 16:28:16 -07:00
|
|
|
def head?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(T::Boolean) }
|
2016-11-03 16:28:16 -07:00
|
|
|
def null?
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
2020-11-05 17:17:03 -05:00
|
|
|
# For {OS::Mac::Version} compatibility.
|
2020-10-20 12:03:48 +02:00
|
|
|
sig { returns(T::Boolean) }
|
2019-01-28 19:31:21 +00:00
|
|
|
def requires_nehalem_cpu?
|
|
|
|
false
|
|
|
|
end
|
2021-01-16 11:49:01 -08:00
|
|
|
alias requires_sse4? requires_nehalem_cpu?
|
|
|
|
alias requires_sse41? requires_nehalem_cpu?
|
|
|
|
alias requires_sse42? requires_nehalem_cpu?
|
|
|
|
alias requires_popcnt? requires_nehalem_cpu?
|
2022-04-13 07:54:54 -04:00
|
|
|
alias outdated_release? requires_nehalem_cpu?
|
2019-01-28 19:31:21 +00:00
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(Token) }
|
2020-08-11 13:01:10 -07:00
|
|
|
def major
|
|
|
|
NULL_TOKEN
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(Token) }
|
2020-08-11 13:01:10 -07:00
|
|
|
def minor
|
|
|
|
NULL_TOKEN
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(Token) }
|
2020-08-11 13:01:10 -07:00
|
|
|
def patch
|
|
|
|
NULL_TOKEN
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(Version) }
|
2020-08-11 13:01:10 -07:00
|
|
|
def major_minor
|
|
|
|
self
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(Version) }
|
2020-08-11 13:01:10 -07:00
|
|
|
def major_minor_patch
|
|
|
|
self
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(Float) }
|
2016-11-03 16:28:16 -07:00
|
|
|
def to_f
|
|
|
|
Float::NAN
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(Integer) }
|
2017-11-30 09:42:14 +00:00
|
|
|
def to_i
|
|
|
|
0
|
|
|
|
end
|
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(String) }
|
2016-11-03 16:28:16 -07:00
|
|
|
def to_s
|
|
|
|
""
|
|
|
|
end
|
2021-01-16 11:49:01 -08:00
|
|
|
alias to_str to_s
|
2016-11-21 08:48:26 +00:00
|
|
|
|
2021-01-16 11:49:01 -08:00
|
|
|
sig { override.returns(String) }
|
2016-11-21 08:48:26 +00:00
|
|
|
def inspect
|
2019-04-19 15:38:03 +09:00
|
|
|
"#<Version::NULL>"
|
2016-11-21 08:48:26 +00:00
|
|
|
end
|
2021-01-16 11:49:01 -08:00
|
|
|
end
|
|
|
|
private_constant :NullVersion
|
|
|
|
|
|
|
|
# Represents the absence of a version.
|
|
|
|
NULL = NullVersion.instance.freeze
|
2016-11-03 16:28:16 -07:00
|
|
|
end
|