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



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)



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)



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.



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.



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



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



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

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