Sha256: da1d1695096c8856f0bcbef79740d1ed54826f266d75ccec365d554555eb1462

Contents?: true

Size: 1.36 KB

Versions: 180

Compression:

Stored size: 1.36 KB

Contents

class SpecVersion
  # If beginning implementations have a problem with this include, we can
  # manually implement the relational operators that are needed.
  include Comparable

  # SpecVersion handles comparison correctly for the context by filling in
  # missing version parts according to the value of +ceil+. If +ceil+ is
  # +false+, 0 digits fill in missing version parts. If +ceil+ is +true+, 9
  # digits fill in missing parts. (See e.g. VersionGuard and BugGuard.)
  def initialize(version, ceil = false)
    @version = version
    @ceil    = ceil
    @integer = nil
  end

  def to_s
    @version
  end

  def to_str
    to_s
  end

  # Converts a string representation of a version major.minor.tiny.patchlevel
  # to an integer representation so that comparisons can be made. For example,
  # "1.8.6.77" < "1.8.6.123" would be false if compared as strings.
  def to_i
    unless @integer
      major, minor, tiny, patch = @version.split "."
      if @ceil
        tiny = 99 unless tiny
        patch = 9999 unless patch
      end
      parts = [major, minor, tiny, patch].map { |x| x.to_i }
      @integer = ("1%02d%02d%02d%04d" % parts).to_i
    end
    @integer
  end

  def to_int
    to_i
  end

  def <=>(other)
    if other.respond_to? :to_int
      other = Integer other
    else
      other = SpecVersion.new(String(other)).to_i
    end

    self.to_i <=> other
  end
end

Version data entries

180 entries across 156 versions & 4 rubygems

Version Path
rhodes-5.5.18 lib/extensions/mspec/mspec/utils/version.rb
rhodes-5.5.17 lib/extensions/mspec/mspec/utils/version.rb
rhodes-5.5.15 lib/extensions/mspec/mspec/utils/version.rb
rhodes-5.5.0.22 lib/extensions/mspec/mspec/utils/version.rb
rhodes-5.5.2 lib/extensions/mspec/mspec/utils/version.rb
rhodes-5.5.0.7 lib/extensions/mspec/mspec/utils/version.rb
rhodes-5.5.0.3 lib/extensions/mspec/mspec/utils/version.rb
rhodes-5.5.0 lib/extensions/mspec/mspec/utils/version.rb
tauplatform-1.0.3 lib/extensions/mspec/mspec/utils/version.rb
mspec-1.9.1 lib/mspec/utils/version.rb
mspec-1.9.0 lib/mspec/utils/version.rb
tauplatform-1.0.2 lib/extensions/mspec/mspec/utils/version.rb
tauplatform-1.0.1 lib/extensions/mspec/mspec/utils/version.rb
mspec-1.8.0 lib/mspec/utils/version.rb
mspec-1.7.0 lib/mspec/utils/version.rb
mspec-1.6.0 lib/mspec/utils/version.rb
mspec-1.5.21 lib/mspec/utils/version.rb
mspec-1.5.20 lib/mspec/utils/version.rb
mspec-1.5.19 lib/mspec/utils/version.rb
mspec-1.5.18 lib/mspec/utils/version.rb