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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ua) ⇒ Platform

Returns a new instance of Platform.



27
28
29
# File 'lib/browser/platform.rb', line 27

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

Class Method Details

.matchersObject

Hold the list of platform matchers. Order is important.



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

def self.matchers
  @matchers ||= [
    AdobeAir,
    ChromeOS,
    WindowsMobile,
    WindowsPhone,
    Android,
    BlackBerry,
    IOS,
    Mac,
    FirefoxOS,
    Windows,
    Linux,
    Other
  ]
end

Instance Method Details

#==(other) ⇒ Object



101
102
103
# File 'lib/browser/platform.rb', line 101

def ==(other)
  id == other
end

#adobe_air?Boolean

Returns:

  • (Boolean)


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

def adobe_air?
  id == :adobe_air
end

#android?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#blackberry?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#chrome_os?Boolean

Returns:

  • (Boolean)


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

def chrome_os?
  id == :chrome_os
end

#firefox_os?Boolean

Returns:

  • (Boolean)


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

def firefox_os?
  id == :firefox_os
end

#idObject



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

def id
  subject.id
end

#ios?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


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

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)


106
107
108
# File 'lib/browser/platform.rb', line 106

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

#ios_webview?Boolean

Detect if is iOS webview.

Returns:

  • (Boolean)


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

def ios_webview?
  ios_app?
end

#linux?Boolean

Returns:

  • (Boolean)


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

def linux?
  id == :linux
end

#mac?Boolean

Returns:

  • (Boolean)


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

def mac?
  id == :mac
end

#nameObject



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

def name
  subject.name
end

#other?Boolean

Returns:

  • (Boolean)


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

def other?
  id == :other
end

#subjectObject



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

def subject
  @subject ||= self.class.matchers
               .map {|matcher| matcher.new(ua) }
               .find(&:match?)
end

#to_sObject



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

def to_s
  id.to_s
end

#versionObject



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

def version
  subject.version
end

#windows10?Boolean

Returns:

  • (Boolean)


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

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

#windows7?Boolean

Returns:

  • (Boolean)


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

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

#windows8?Boolean

Returns:

  • (Boolean)


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

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

#windows8_1?Boolean

Returns:

  • (Boolean)


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

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

#windows?Boolean

Returns:

  • (Boolean)


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

def windows?
  id == :windows
end

#windows_mobile?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#windows_phone?(expected_version = nil) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#windows_rt?Boolean

Returns:

  • (Boolean)


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

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

#windows_touchscreen_desktop?Boolean

Returns:

  • (Boolean)


157
158
159
# File 'lib/browser/platform.rb', line 157

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

#windows_vista?Boolean

Returns:

  • (Boolean)


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

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

#windows_wow64?Boolean

Returns:

  • (Boolean)


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

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

#windows_x64?Boolean

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

Returns:

  • (Boolean)


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

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

#windows_x64_inclusive?Boolean

Returns:

  • (Boolean)


153
154
155
# File 'lib/browser/platform.rb', line 153

def windows_x64_inclusive?
  windows_x64? || windows_wow64?
end

#windows_xp?Boolean

Returns:

  • (Boolean)


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

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