Class: Browser::Platform

Inherits:
Object
  • Object
show all
Includes:
DetectVersion
Defined in:
lib/browser/platform.rb,
lib/browser/platform/ios.rb,
lib/browser/platform/mac.rb,
lib/browser/platform/base.rb,
lib/browser/platform/linux.rb,
lib/browser/platform/other.rb,
lib/browser/platform/android.rb,
lib/browser/platform/windows.rb,
lib/browser/platform/adobe_air.rb,
lib/browser/platform/chrome_os.rb,
lib/browser/platform/blackberry.rb,
lib/browser/platform/firefox_os.rb,
lib/browser/platform/windows_phone.rb,
lib/browser/platform/windows_mobile.rb

Defined Under Namespace

Classes: AdobeAir, Android, Base, BlackBerry, ChromeOS, FirefoxOS, IOS, Linux, Mac, Other, Windows, WindowsMobile, WindowsPhone

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ua) ⇒ Platform

Returns a new instance of Platform.



8
9
10
# File 'lib/browser/platform.rb', line 8

def initialize(ua)
  @ua = ua
end

Instance Attribute Details

#uaObject (readonly)

Returns the value of attribute ua.



6
7
8
# File 'lib/browser/platform.rb', line 6

def ua
  @ua
end

Instance Method Details

#==(other) ⇒ Object



93
94
95
# File 'lib/browser/platform.rb', line 93

def ==(other)
  id == other
end

#adobe_air?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/browser/platform.rb', line 29

def adobe_air?
  id == :adobe_air
end

#android?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/browser/platform.rb', line 37

def android?(expected_version = nil)
  id == :android && detect_version?(version, expected_version)
end

#blackberry?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/browser/platform.rb', line 65

def blackberry?(expected_version = nil)
  id == :blackberry && detect_version?(version, expected_version)
end

#chrome_os?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/browser/platform.rb', line 33

def chrome_os?
  id == :chrome_os
end

#firefox_os?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/browser/platform.rb', line 57

def firefox_os?
  id == :firefox_os
end

#idObject



77
78
79
# File 'lib/browser/platform.rb', line 77

def id
  subject.id
end

#ios?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/browser/platform.rb', line 61

def ios?(expected_version = nil)
  id == :ios && detect_version?(version, expected_version)
end

#ios_app?Boolean

Detect if running on iOS app webview.

Returns:

  • (Boolean)


98
99
100
# File 'lib/browser/platform.rb', line 98

def ios_app?
  ios? && !ua.include?("Safari")
end

#ios_webview?Boolean

Detect if is iOS webview.

Returns:

  • (Boolean)


103
104
105
# File 'lib/browser/platform.rb', line 103

def ios_webview?
  ios_app?
end

#linux?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/browser/platform.rb', line 45

def linux?
  id == :linux
end

#mac?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/browser/platform.rb', line 49

def mac?
  id == :mac
end

#nameObject



85
86
87
# File 'lib/browser/platform.rb', line 85

def name
  subject.name
end

#other?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/browser/platform.rb', line 41

def other?
  id == :other
end

#subjectObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/browser/platform.rb', line 12

def subject
  @subject ||= [
    AdobeAir.new(ua),
    ChromeOS.new(ua),
    WindowsMobile.new(ua),
    WindowsPhone.new(ua),
    Android.new(ua),
    BlackBerry.new(ua),
    IOS.new(ua),
    Mac.new(ua),
    FirefoxOS.new(ua),
    Windows.new(ua),
    Linux.new(ua),
    Other.new(ua)
  ].find(&:match?)
end

#to_sObject



89
90
91
# File 'lib/browser/platform.rb', line 89

def to_s
  id.to_s
end

#versionObject



81
82
83
# File 'lib/browser/platform.rb', line 81

def version
  subject.version
end

#windows10?Boolean

Returns:

  • (Boolean)


128
129
130
# File 'lib/browser/platform.rb', line 128

def windows10?
  windows? && ua =~ /Windows NT 10/
end

#windows7?Boolean

Returns:

  • (Boolean)


116
117
118
# File 'lib/browser/platform.rb', line 116

def windows7?
  windows? && ua =~ /Windows NT 6\.1/
end

#windows8?Boolean

Returns:

  • (Boolean)


120
121
122
# File 'lib/browser/platform.rb', line 120

def windows8?
  windows? && ua =~ /Windows NT 6\.[2-3]/
end

#windows8_1?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/browser/platform.rb', line 124

def windows8_1?
  windows? && ua =~ /Windows NT 6\.3/
end

#windows?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/browser/platform.rb', line 53

def windows?
  id == :windows
end

#windows_mobile?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/browser/platform.rb', line 73

def windows_mobile?(expected_version = nil)
  id == :windows_mobile && detect_version?(version, expected_version)
end

#windows_phone?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/browser/platform.rb', line 69

def windows_phone?(expected_version = nil)
  id == :windows_phone && detect_version?(version, expected_version)
end

#windows_rt?Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/browser/platform.rb', line 132

def windows_rt?
  windows8? && ua =~ /ARM/
end

#windows_touchscreen_desktop?Boolean

Returns:

  • (Boolean)


149
150
151
# File 'lib/browser/platform.rb', line 149

def windows_touchscreen_desktop?
  windows? && ua =~ /Touch/
end

#windows_vista?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/browser/platform.rb', line 112

def windows_vista?
  windows? && ua =~ /Windows NT 6\.0/
end

#windows_wow64?Boolean

Returns:

  • (Boolean)


141
142
143
# File 'lib/browser/platform.rb', line 141

def windows_wow64?
  windows? && ua =~ /WOW64/i
end

#windows_x64?Boolean

Detect if current platform is Windows in 64-bit architecture.

Returns:

  • (Boolean)


137
138
139
# File 'lib/browser/platform.rb', line 137

def windows_x64?
  windows? && ua =~ /(Win64|x64|Windows NT 5\.2)/
end

#windows_x64_inclusive?Boolean

Returns:

  • (Boolean)


145
146
147
# File 'lib/browser/platform.rb', line 145

def windows_x64_inclusive?
  windows_x64? || windows_wow64?
end

#windows_xp?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/browser/platform.rb', line 108

def windows_xp?
  windows? && ua =~ /Windows NT 5\.[12]/
end