| 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 50
50: def initialize(name, version_requirements, type=:runtime)
51: @name = name
52:
53: unless TYPES.include? type
54: raise ArgumentError, "Valid types are #{TYPES.inspect}, not #{@type.inspect}"
55: end
56:
57: @type = type
58:
59: @version_requirements = Gem::Requirement.create version_requirements
60: @version_requirement = nil # Avoid warnings.
61: end
Orders dependencies by name only.
# File lib/rubygems/dependency.rb, line 43
43: def <=>(other)
44: [@name] <=> [other.name]
45: end
Uses this dependency as a pattern to compare to the dependency 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 96
96: def =~(other)
97: return false unless self.class === other
98:
99: pattern = @name
100: pattern = /\A#{@name}\Z/ unless Regexp === pattern
101:
102: return false unless pattern =~ other.name
103:
104: reqs = other.version_requirements.requirements
105:
106: return false unless reqs.length == 1
107: return false unless reqs.first.first == '='
108:
109: version = reqs.first.last
110:
111: version_requirements.satisfied_by? version
112: end
# File lib/rubygems/dependency.rb, line 74
74: def normalize
75: ver = @version_requirement.instance_eval { @version }
76: @version_requirements = Gem::Requirement.new([ver])
77: @version_requirement = nil
78: end
# File lib/rubygems/dependency.rb, line 68
68: def requirement_list
69: version_requirements.as_list
70: end