class UserAgent::Version

Public Class Methods

new(obj = nil) click to toggle source
Calls superclass method
# File lib/user_agent/version.rb, line 5
def self.new(obj = nil)
  case obj
  when Version
    obj
  when String
    super
  when NilClass
    super("")
  else
    raise ArgumentError, "invalid value for Version: #{obj.inspect}"
  end
end
new(str) click to toggle source
# File lib/user_agent/version.rb, line 18
def initialize(str)
  @str = str

  if @str =~ /^\s*$/
    @nil        = true
    @sequences  = []
    @comparable = false
  elsif str =~ /^\d+$/ || str =~ /^\d+\./
    @nil        = false
    @sequences  = str.scan(/\d+|[A-Za-z][0-9A-Za-z-]*$/).map { |s| s =~ /^\d+$/ ? s.to_i : s }
    @comparable = true
  else
    @nil        = false
    @sequences  = [str]
    @comparable = false
  end
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/user_agent/version.rb, line 65
def <=>(other)
  case other
  when Version
    if @comparable
      ([0]*6).zip(to_a, other.to_a).each do |dump, a, b|
        a ||= 0
        b ||= 0

        if a.is_a?(String) && b.is_a?(Integer)
          return -1
        elsif a.is_a?(Integer) && b.is_a?(String)
          return 1
        elsif a == b
          next
        else
          return a <=> b
        end
      end
      0
    elsif to_s == other.to_s
      return 0
    else
      return -1
    end
  when String, NilClass
    self <=> self.class.new(other)
  else
    nil
  end
end
==(other) click to toggle source
# File lib/user_agent/version.rb, line 52
def ==(other)
  case other
  when Version
    eql?(other)
  when String
    eql?(self.class.new(other))
  when NilClass
    nil?
  else
    false
  end
end
eql?(other) click to toggle source
# File lib/user_agent/version.rb, line 48
def eql?(other)
  other.is_a?(self.class) && to_s == other.to_s
end
inspect() click to toggle source
# File lib/user_agent/version.rb, line 100
def inspect
  "#<#{self.class} #{to_s}>"
end
nil?() click to toggle source
# File lib/user_agent/version.rb, line 36
def nil?
  @nil
end
to_a() click to toggle source
# File lib/user_agent/version.rb, line 40
def to_a
  @sequences.dup
end
to_s() click to toggle source
# File lib/user_agent/version.rb, line 96
def to_s
  to_str
end
to_str() click to toggle source
# File lib/user_agent/version.rb, line 44
def to_str
  @str.dup
end