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