class DependencySpy::SemVer

Public Class Methods

intersects(vor1, vor2) click to toggle source
# File lib/dependency_spy/semver.rb, line 23
def self.intersects(vor1, vor2)
  vor1 = parse(vor1) if vor1.is_a?(String)
  vor2 = parse(vor2) if vor2.is_a?(String)

  if vor1.is_a?(SemanticRange::Range) && vor2.is_a?(SemanticRange::Range)
    vor1.intersects(vor2)
  elsif vor1.is_a?(SemanticRange::Range) && vor2.is_a?(SemanticRange::Version)
    SemanticRange.satisfies(vor2, vor1)
  elsif vor1.is_a?(SemanticRange::Version) && vor2.is_a?(SemanticRange::Range)
    SemanticRange.satisfies(vor1, vor2)
  elsif vor1.is_a?(SemanticRange::Version) && vor2.is_a?(SemanticRange::Version)
    SemanticRange.eq(vor1, vor2)
  else
    vor1 == vor2
  end
end

Private Class Methods

parse(version_or_range, loose = false) click to toggle source
# File lib/dependency_spy/semver.rb, line 44
def parse(version_or_range, loose = false)
  version_or_range = '>= 0.0.0' if version_or_range == '*'
  return version_or_range if version_or_range.is_a?(SemanticRange::Range) ||
                             version_or_range.is_a?(SemanticRange::Version)

  begin
    SemanticRange::Version.new(version_or_range, loose)
  rescue SemanticRange::InvalidVersion
    begin
      SemanticRange::Range.new(version_or_range, loose)
    rescue SemanticRange::InvalidRange
      version_or_range
    end
  end
end