Sha256: a1f94078d8562ea5189251910d94935c23bf7243bdd862969bf105908654a7f3

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

module SemanticRange
  class Comparator
    def initialize(comp, loose)
      @loose = loose

      if comp.is_a?(Comparator)
        if comp.loose == loose
          return comp
        else
          @comp = comp.value
        end
      end

      parse(comp)

      if @semver == ANY
        @value = ''
      else
        @value = @operator + @semver.version
      end
    end

    def semver
      @semver
    end

    def operator
      @operator
    end

    def to_s
      @value
    end

    def value
      @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 'Invalid comparator: ' + comp unless m

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

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
semantic_range-0.1.1 lib/semantic_range/comparator.rb
semantic_range-0.1.0 lib/semantic_range/comparator.rb