Module: Bundler::VersionRanges
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Defined in: | lib/bundler/version_ranges.rb |
Class Method Summary
Class Method Details
.empty?(ranges, neqs) ⇒ Boolean
# File 'lib/bundler/version_ranges.rb', line 103
def self.empty?(ranges, neqs) !ranges.reduce(ReqR::UNIVERSAL) do |last_range, curr_range| next false unless last_range next false if curr_range.single? && neqs.include?(curr_range.left.version) next curr_range if last_range.right.version == ReqR::INFINITY case last_range.right.version <=> curr_range.left.version # higher when 1 then next ReqR.new(curr_range.left, last_range.right) # equal when 0 if last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version) ReqR.new(curr_range.left, [curr_range.right, last_range.right].max) end # lower when -1 then next false end end end
.for(requirement)
[ GitHub ]# File 'lib/bundler/version_ranges.rb', line 85
def self.for(requirement) ranges = requirement.requirements.map do |op, v| case op when "=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v, true)) when "!=" then NEq.new(v) when ">=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(ReqR::INFINITY, false)) when ">" then ReqR.new(ReqR::Endpoint.new(v, false), ReqR::Endpoint.new(ReqR::INFINITY, false)) when "<" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, false)) when "<=" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, true)) when "~>" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v.bump, false)) else raise "unknown version op #{op} in requirement #{requirement}" end end.uniq ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) } [ranges.sort, neqs.map(&:version)] end