Class: Dependabot::Utils::Elixir::Version

Inherits:
Gem::Version
  • Object
show all
Defined in:
lib/dependabot/utils/elixir/version.rb

Constant Summary collapse

VERSION_PATTERN =
Gem::Version::VERSION_PATTERN +
'(\+[0-9a-zA-Z\-.]+)?'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version) ⇒ Version



20
21
22
23
24
# File 'lib/dependabot/utils/elixir/version.rb', line 20

def initialize(version)
  @version_string = version.to_s
  version, @build_info = version.split("+")
  super
end

Instance Attribute Details

#build_infoObject (readonly)

Returns the value of attribute build_info.



11
12
13
# File 'lib/dependabot/utils/elixir/version.rb', line 11

def build_info
  @build_info
end

Class Method Details

.correct?(version) ⇒ Boolean



16
17
18
# File 'lib/dependabot/utils/elixir/version.rb', line 16

def self.correct?(version)
  super(version.to_s.split("+").first)
end

Instance Method Details

#<=>(other) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/dependabot/utils/elixir/version.rb', line 34

def <=>(other)
  version_comparison = super(other)
  return version_comparison unless version_comparison.zero?

  unless other.is_a?(Utils::Elixir::Version)
    return build_info.nil? ? 0 : 1
  end

  # Build information comparison
  lhsegments = build_info.to_s.split(".").map(&:downcase)
  rhsegments = other.build_info.to_s.split(".").map(&:downcase)
  limit = [lhsegments.count, rhsegments.count].min

  lhs = ["1", *lhsegments.first(limit)].join(".")
  rhs = ["1", *rhsegments.first(limit)].join(".")

  local_comparison = Gem::Version.new(lhs) <=> Gem::Version.new(rhs)

  return local_comparison unless local_comparison.zero?

  lhsegments.count <=> rhsegments.count
end

#inspectObject

:nodoc:



30
31
32
# File 'lib/dependabot/utils/elixir/version.rb', line 30

def inspect # :nodoc:
  "#<#{self.class} #{@version_string}>"
end

#to_sObject



26
27
28
# File 'lib/dependabot/utils/elixir/version.rb', line 26

def to_s
  @version_string
end