Sha256: c38ffb85f6ac706230e11e61288d7b5f4edaa6eb50a6df8c8b0d5572dc4da42b

Contents?: true

Size: 844 Bytes

Versions: 2

Compression:

Stored size: 844 Bytes

Contents

module SemanticRange
  class Comparator
    attr_reader :semver, :operator, :value
    def initialize(comp, loose)
      if comp.is_a?(Comparator)
        return comp if comp.loose == loose
        @comp = comp.value
      end

      @loose = loose
      parse(comp)

      @value = @semver == ANY ? '' : @operator + @semver.version
    end

    def to_s
      @value
    end

    def test(version)
      return true if @semver == ANY
      version = Version.new(version, @loose) if version.is_a?(String)
      SemanticRange.cmp(version, @operator, @semver, @loose)
    end

    def parse(comp)
      m = comp.match(@loose ? COMPARATORLOOSE : COMPARATOR)
      raise InvalidComparator.new(comp) unless m

      @operator = m[1]
      @operator = '' if @operator == '='

      @semver = !m[2] ? ANY : Version.new(m[2], @loose)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
semantic_range-2.0.0 lib/semantic_range/comparator.rb
semantic_range-1.0.0 lib/semantic_range/comparator.rb