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