Class: Gemirro::GemVersion

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/gemirro/gem_version.rb

Overview

The Gem class contains data about a Gem such as the name, requirement as well as providing some methods to more easily extract the specific version number.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, number, platform) ⇒ GemVersion

Returns a new instance of GemVersion.

Parameters:

  • name (String)
  • number (String)
  • platform (String)


26
27
28
29
30
# File 'lib/gemirro/gem_version.rb', line 26

def initialize(name, number, platform)
  @name     = name
  @number   = number
  @platform = platform
end

Instance Attribute Details

#nameString (readonly)

Returns:

  • (String)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/gemirro/gem_version.rb', line 17

class GemVersion
  include Comparable
  attr_reader :name, :number, :platform, :version

  ##
  # @param [String] name
  # @param [String] number
  # @param [String] platform
  #
  def initialize(name, number, platform)
    @name     = name
    @number   = number
    @platform = platform
  end

  ##
  # Is for ruby
  #
  # @return [Boolean]
  #
  def ruby?
    !(@platform =~ /^ruby$/i).nil?
  end

  ##
  # Retrieve gem version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= ::Gem::Version.create(number)
  end

  ##
  # Compare gem to another
  #
  # @return [Integer]
  #
  def <=>(other)
    sort = other.name <=> @name
    sort = version <=> other.version if sort.zero?
    sort = other.ruby? && !ruby? ? 1 : -1 if sort.zero? &&
                                             ruby? != other.ruby?
    sort = other.platform <=> @platform if sort.zero?

    sort
  end

  ##
  # Gemfile name
  #
  # @return [String]
  #
  def gemfile_name
    platform = ruby? ? nil : @platform
    [@name, @number, platform].compact.join('-')
  end
end

#numberInteger (readonly)

Returns:

  • (Integer)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/gemirro/gem_version.rb', line 17

class GemVersion
  include Comparable
  attr_reader :name, :number, :platform, :version

  ##
  # @param [String] name
  # @param [String] number
  # @param [String] platform
  #
  def initialize(name, number, platform)
    @name     = name
    @number   = number
    @platform = platform
  end

  ##
  # Is for ruby
  #
  # @return [Boolean]
  #
  def ruby?
    !(@platform =~ /^ruby$/i).nil?
  end

  ##
  # Retrieve gem version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= ::Gem::Version.create(number)
  end

  ##
  # Compare gem to another
  #
  # @return [Integer]
  #
  def <=>(other)
    sort = other.name <=> @name
    sort = version <=> other.version if sort.zero?
    sort = other.ruby? && !ruby? ? 1 : -1 if sort.zero? &&
                                             ruby? != other.ruby?
    sort = other.platform <=> @platform if sort.zero?

    sort
  end

  ##
  # Gemfile name
  #
  # @return [String]
  #
  def gemfile_name
    platform = ruby? ? nil : @platform
    [@name, @number, platform].compact.join('-')
  end
end

#platformString (readonly)

Returns:

  • (String)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/gemirro/gem_version.rb', line 17

class GemVersion
  include Comparable
  attr_reader :name, :number, :platform, :version

  ##
  # @param [String] name
  # @param [String] number
  # @param [String] platform
  #
  def initialize(name, number, platform)
    @name     = name
    @number   = number
    @platform = platform
  end

  ##
  # Is for ruby
  #
  # @return [Boolean]
  #
  def ruby?
    !(@platform =~ /^ruby$/i).nil?
  end

  ##
  # Retrieve gem version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= ::Gem::Version.create(number)
  end

  ##
  # Compare gem to another
  #
  # @return [Integer]
  #
  def <=>(other)
    sort = other.name <=> @name
    sort = version <=> other.version if sort.zero?
    sort = other.ruby? && !ruby? ? 1 : -1 if sort.zero? &&
                                             ruby? != other.ruby?
    sort = other.platform <=> @platform if sort.zero?

    sort
  end

  ##
  # Gemfile name
  #
  # @return [String]
  #
  def gemfile_name
    platform = ruby? ? nil : @platform
    [@name, @number, platform].compact.join('-')
  end
end

#versionGem::Version (readonly)

Retrieve gem version

Returns:

  • (Gem::Version)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/gemirro/gem_version.rb', line 17

class GemVersion
  include Comparable
  attr_reader :name, :number, :platform, :version

  ##
  # @param [String] name
  # @param [String] number
  # @param [String] platform
  #
  def initialize(name, number, platform)
    @name     = name
    @number   = number
    @platform = platform
  end

  ##
  # Is for ruby
  #
  # @return [Boolean]
  #
  def ruby?
    !(@platform =~ /^ruby$/i).nil?
  end

  ##
  # Retrieve gem version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= ::Gem::Version.create(number)
  end

  ##
  # Compare gem to another
  #
  # @return [Integer]
  #
  def <=>(other)
    sort = other.name <=> @name
    sort = version <=> other.version if sort.zero?
    sort = other.ruby? && !ruby? ? 1 : -1 if sort.zero? &&
                                             ruby? != other.ruby?
    sort = other.platform <=> @platform if sort.zero?

    sort
  end

  ##
  # Gemfile name
  #
  # @return [String]
  #
  def gemfile_name
    platform = ruby? ? nil : @platform
    [@name, @number, platform].compact.join('-')
  end
end

Instance Method Details

#<=>(other) ⇒ Integer

Compare gem to another

Returns:

  • (Integer)


55
56
57
58
59
60
61
62
63
# File 'lib/gemirro/gem_version.rb', line 55

def <=>(other)
  sort = other.name <=> @name
  sort = version <=> other.version if sort.zero?
  sort = other.ruby? && !ruby? ? 1 : -1 if sort.zero? &&
                                           ruby? != other.ruby?
  sort = other.platform <=> @platform if sort.zero?

  sort
end

#gemfile_nameString

Gemfile name

Returns:

  • (String)


70
71
72
73
# File 'lib/gemirro/gem_version.rb', line 70

def gemfile_name
  platform = ruby? ? nil : @platform
  [@name, @number, platform].compact.join('-')
end

#ruby?Boolean

Is for ruby

Returns:

  • (Boolean)


37
38
39
# File 'lib/gemirro/gem_version.rb', line 37

def ruby?
  !(@platform =~ /^ruby$/i).nil?
end