| Class | Gem::Dependency |
| In: |
lib/rubygems/dependency.rb
|
| Parent: | Object |
The Dependency class holds a Gem name and a Gem::Requirement
| TYPES | = | [ :development, :runtime, ] | Valid dependency types. |
| name | [RW] | Dependency name or regular expression. |
| type | [R] | Dependency type. |
| version_requirements | [W] | Dependent versions. |
Constructs a dependency with name and requirements.
# 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
Orders dependencies by name only.
# 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.
# 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
# File lib/rubygems/dependency.rb, line 138
138: def hash
139: name.hash + type.hash + version_requirements.hash
140: end
# 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
# File lib/rubygems/dependency.rb, line 66
66: def requirement_list
67: version_requirements.as_list
68: end