module UserAgentParser class Version # Private: Regex used to split version string into major, minor, patch, # and patch_minor. SEGMENTS_REGEX = /\d+\-\d+|\d+[a-zA-Z]+$|\d+|[A-Za-z][0-9A-Za-z-]*$/ attr_reader :version alias :to_s :version def initialize(version) @version = version.to_s.strip end def major segments[0] end def minor segments[1] end def patch segments[2] end def patch_minor segments[3] end def inspect "#<#{self.class} #{to_s}>" end def eql?(other) self.class.eql?(other.class) && version == other.version end alias_method :==, :eql? # Private def segments @segments ||= version.scan(SEGMENTS_REGEX) end end end