Class Gem::Dependency
In: lib/rubygems/dependency.rb
Parent: Object

The Dependency class holds a Gem name and a Gem::Requirement

Methods

Constants

TYPES = [ :development, :runtime, ]   Valid dependency types.

Attributes

name  [RW]  Dependency name or regular expression.
type  [R]  Dependency type.
version_requirements  [W]  Dependent versions.

Public Class methods

Constructs a dependency with name and requirements.

[Source]

    # File lib/rubygems/dependency.rb, line 48
48:   def initialize(name, version_requirements, type=:runtime)
49:     @name = name
50: 
51:     unless TYPES.include? type
52:       raise ArgumentError, "Valid types are #{TYPES.inspect}, not #{@type.inspect}"
53:     end
54: 
55:     @type = type
56: 
57:     @version_requirements = Gem::Requirement.create version_requirements
58:     @version_requirement = nil   # Avoid warnings.
59:   end

Public Instance methods

Orders dependencies by name only.

[Source]

    # File lib/rubygems/dependency.rb, line 41
41:   def <=>(other)
42:     [@name] <=> [other.name]
43:   end

Uses this dependency as a pattern to compare to other. This dependency will match if the name matches the other‘s name, and other has only an equal version requirement that satisfies this dependency.

[Source]

     # File lib/rubygems/dependency.rb, line 109
109:   def =~(other)
110:     other = if self.class === other then
111:               other
112:             else
113:               return false unless other.respond_to? :name and
114:                                   other.respond_to? :version
115: 
116:               Gem::Dependency.new other.name, other.version
117:             end
118: 
119:     pattern = @name
120:     pattern = /\A#{Regexp.escape @name}\Z/ unless Regexp === pattern
121: 
122:     return false unless pattern =~ other.name
123: 
124:     reqs = other.version_requirements.requirements
125: 
126:     return false unless reqs.length == 1
127:     return false unless reqs.first.first == '='
128: 
129:     version = reqs.first.last
130: 
131:     version_requirements.satisfied_by? version
132:   end

A dependency‘s hash is the sum of the hash of the name, type and version_requirements

[Source]

     # File lib/rubygems/dependency.rb, line 138
138:   def hash
139:     name.hash + type.hash + version_requirements.hash
140:   end

[Source]

    # File lib/rubygems/dependency.rb, line 72
72:   def normalize
73:     ver = @version_requirement.instance_variable_get :@version
74:     @version_requirements = Gem::Requirement.new([ver])
75:     @version_requirement = nil
76:   end

[Source]

    # File lib/rubygems/dependency.rb, line 66
66:   def requirement_list
67:     version_requirements.as_list
68:   end
requirements_list()

Alias for requirement_list

[Source]

    # File lib/rubygems/dependency.rb, line 61
61:   def version_requirements
62:     normalize if defined? @version_requirement and @version_requirement
63:     @version_requirements
64:   end

[Validate]