Module: UserAgent::OperatingSystems

Defined in:
lib/user_agent/operating_systems.rb

Constant Summary collapse

IOS_VERSION_REGEX =
/CPU (?:iPhone |iPod )?OS ([\d_]+) like Mac OS X/
Windows =
{
  "Windows NT 10.0" => "Windows 10",
  "Windows NT 6.3"  => "Windows 8.1",
  "Windows NT 6.2"  => "Windows 8",
  "Windows NT 6.1"  => "Windows 7",
  "Windows NT 6.0"  => "Windows Vista",
  "Windows NT 5.2"  => "Windows XP x64 Edition",
  "Windows NT 5.1"  => "Windows XP",
  "Windows NT 5.01" => "Windows 2000, Service Pack 1 (SP1)",
  "Windows NT 5.0"  => "Windows 2000",
  "Windows NT 4.0"  => "Windows NT 4.0",
  "Windows 98"      => "Windows 98",
  "Windows 95"      => "Windows 95",
  "Windows CE"      => "Windows CE"
}.freeze

Class Method Summary collapse

Class Method Details

.normalize_chrome_os(os) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/user_agent/operating_systems.rb', line 26

def self.normalize_chrome_os(os)
  if os =~ /CrOS\s([^\s]+)\s(\d+(\.\d+)*)/
    if $2.nil?
      "ChromeOS"
    else
      version = $2
      "ChromeOS #{version}"
    end
  end
end

.normalize_ios(os) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/user_agent/operating_systems.rb', line 37

def self.normalize_ios(os)
  if os =~ IOS_VERSION_REGEX
    if $1.nil?
      "iOS"
    else
      version = $1.gsub('_', '.')
      "iOS #{version}"
    end
  end
end

.normalize_mac_os_x(os) ⇒ Object



48
49
50
51
52
53
54
55
56
57
# File 'lib/user_agent/operating_systems.rb', line 48

def self.normalize_mac_os_x(os)
  if os =~ /(?:Intel|PPC) Mac OS X\s*([0-9_\.]+)?/
    if $1.nil?
      "OS X"
    else
      version = $1.gsub('_', '.')
      "OS X #{version}"
    end
  end
end

.normalize_os(os) ⇒ Object



21
22
23
# File 'lib/user_agent/operating_systems.rb', line 21

def self.normalize_os(os)
  Windows[os] || normalize_mac_os_x(os) || normalize_ios(os) || normalize_chrome_os(os) || os
end