class Bundler::PubGrub::VersionConstraint - bundler: Ruby Standard Library Documentation

# class Bundler::PubGrub::VersionConstraint

### Attributes

package[R]
range[R]

### Public Class Methods

any(package) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 34
    def any(package)
      new(package, range: VersionRange.any)
    end

empty(package) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 38
    def empty(package)
      new(package, range: VersionRange.empty)
    end

exact(package, version) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 29
    def exact(package, version)
      range = VersionRange.new(min: version, max: version, include_min: true, include_max: true)
      new(package, range: range)
    end

new(package, range: nil) click to toggle source

@param package [Bundler::PubGrub::Package] @param range [Bundler::PubGrub::VersionRange]

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 9
    def initialize(package, range: nil)
      @package = package
      @range = range
    end

### Public Instance Methods

==(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 18
    def ==(other)
      package == other.package &&
        range == other.range
    end

allows_all?(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 68
    def allows_all?(other)
      range.allows_all?(other.range)
    end

allows_any?(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 72
    def allows_any?(other)
      range.intersects?(other.range)
    end

any?() click to toggle source

Does this match every version of the package

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 121
    def any?
      range.any?
    end

constraint_string() click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 108
    def constraint_string
      if any?
        ">= 0"
      else
        range.to_s
      end
    end

difference(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 64
    def difference(other)
      intersect(other.invert)
    end

disjoint?(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 84
    def disjoint?(other)
      !overlap?(other)
    end

empty?() click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 116
    def empty?
      range.empty?
    end

eql?(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 23
    def eql?(other)
      package.eql?(other.package) &&
        range.eql?(other.range)
    end

hash() click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 14
    def hash
      package.hash ^ range.hash
    end

inspect() click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 125
    def inspect
      "#<#{self.class} #{self}>"
    end

intersect(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 43
    def intersect(other)
      unless package == other.package
        raise ArgumentError, "Can only intersect between VersionConstraint of the same package"
      end

      self.class.new(package, range: range.intersect(other.range))
    end

invert() click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 59
    def invert
      new_range = range.invert
      self.class.new(package, range: new_range)
    end

overlap?(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 80
    def overlap?(other)
      other.allows_any?(self)
    end

relation(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 88
    def relation(other)
      if subset?(other)
        :subset
      elsif overlap?(other)
        :overlap
      else
        :disjoint
      end
    end

subset?(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 76
    def subset?(other)
      other.allows_all?(self)
    end

to_s(allow_every: false) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 98
    def to_s(allow_every: false)
      if Package.root?(package)
        package.to_s
      elsif allow_every && any?
        "every version of #{package}"
      else
        "#{package} #{constraint_string}"
      end
    end

union(other) click to toggle source

    # File bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb, line 51
    def union(other)
      unless package == other.package
        raise ArgumentError, "Can only intersect between VersionConstraint of the same package"
      end

      self.class.new(package, range: range.union(other.range))
    end