Class: Gemirro::Gem

Inherits:
Object
  • Object
show all
Defined in:
lib/gemirro/gem.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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, requirement = nil) ⇒ Gem

Returns a new instance of Gem.

Parameters:

  • name (String)
  • requirement (Gem::Requirement|String) (defaults to: nil)


30
31
32
33
34
35
36
37
38
39
# File 'lib/gemirro/gem.rb', line 30

def initialize(name, requirement = nil)
  requirement ||= ::Gem::Requirement.default

  if requirement.is_a?(String)
    requirement = ::Gem::Requirement.new(requirement)
  end

  @name        = name
  @requirement = requirement
end

Instance Attribute Details

#nameString (readonly)

Returns:

  • (String)


13
14
15
16
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
# File 'lib/gemirro/gem.rb', line 13

class Gem
  attr_reader :name, :requirement

  ##
  # Returns a `Gem::Version` instance based on the specified requirement.
  #
  # @param [Gem::Requirement] requirement
  # @return [Gem::Version]
  #
  def self.version_for(requirement)
    ::Gem::Version.new(requirement.requirements.sort.last.last.version)
  end

  ##
  # @param [String] name
  # @param [Gem::Requirement|String] requirement
  #
  def initialize(name, requirement = nil)
    requirement ||= ::Gem::Requirement.default

    if requirement.is_a?(String)
      requirement = ::Gem::Requirement.new(requirement)
    end

    @name        = name
    @requirement = requirement
  end

  ##
  # Returns the version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= self.class.version_for(requirement)
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def version?
    version && !version.segments.reject { |s| s == 0 }.empty?
  end

  ##
  # Returns the filename of the Gemfile.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def filename(gem_version = nil)
    gem_version ||= version.to_s
    "#{name}-#{gem_version}.gem"
  end
end

#requirementGem::Requirement (readonly)

Returns:

  • (Gem::Requirement)


13
14
15
16
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
# File 'lib/gemirro/gem.rb', line 13

class Gem
  attr_reader :name, :requirement

  ##
  # Returns a `Gem::Version` instance based on the specified requirement.
  #
  # @param [Gem::Requirement] requirement
  # @return [Gem::Version]
  #
  def self.version_for(requirement)
    ::Gem::Version.new(requirement.requirements.sort.last.last.version)
  end

  ##
  # @param [String] name
  # @param [Gem::Requirement|String] requirement
  #
  def initialize(name, requirement = nil)
    requirement ||= ::Gem::Requirement.default

    if requirement.is_a?(String)
      requirement = ::Gem::Requirement.new(requirement)
    end

    @name        = name
    @requirement = requirement
  end

  ##
  # Returns the version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= self.class.version_for(requirement)
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def version?
    version && !version.segments.reject { |s| s == 0 }.empty?
  end

  ##
  # Returns the filename of the Gemfile.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def filename(gem_version = nil)
    gem_version ||= version.to_s
    "#{name}-#{gem_version}.gem"
  end
end

Class Method Details

.version_for(requirement) ⇒ Gem::Version

Returns a ‘Gem::Version` instance based on the specified requirement.

Parameters:

  • requirement (Gem::Requirement)

Returns:

  • (Gem::Version)


22
23
24
# File 'lib/gemirro/gem.rb', line 22

def self.version_for(requirement)
  ::Gem::Version.new(requirement.requirements.sort.last.last.version)
end

Instance Method Details

#filename(gem_version = nil) ⇒ String

Returns the filename of the Gemfile.

Parameters:

  • gem_version (String) (defaults to: nil)

Returns:

  • (String)


65
66
67
68
# File 'lib/gemirro/gem.rb', line 65

def filename(gem_version = nil)
  gem_version ||= version.to_s
  "#{name}-#{gem_version}.gem"
end

#versionGem::Version

Returns the version

Returns:

  • (Gem::Version)


46
47
48
# File 'lib/gemirro/gem.rb', line 46

def version
  @version ||= self.class.version_for(requirement)
end

#version?TrueClass|FalseClass

Define if version exists

Returns:

  • (TrueClass|FalseClass)


55
56
57
# File 'lib/gemirro/gem.rb', line 55

def version?
  version && !version.segments.reject { |s| s == 0 }.empty?
end