class Browser::Platform
def self.matchers
Hold the list of platform matchers.
def self.matchers @matchers ||= [ AdobeAir, ChromeOS, WindowsMobile, WindowsPhone, Android, BlackBerry, IOS, Mac, KaiOS, FirefoxOS, Windows, Linux, Unknown ] end
def ==(other)
def ==(other) id == other end
def adobe_air?(expected_version = nil)
def adobe_air?(expected_version = nil) id == :adobe_air && detect_version?(version, expected_version) end
def android?(expected_version = nil)
def android?(expected_version = nil) id == :android && detect_version?(version, expected_version) end
def android_app?
Detect if in an Android app webview (Lollipop and newer)
def android_app? android? && ua.match?(/\bwv\b/) end
def blackberry?(expected_version = nil)
def blackberry?(expected_version = nil) id == :blackberry && detect_version?(version, expected_version) end
def chrome_os?(expected_version = nil)
def chrome_os?(expected_version = nil) id == :chrome_os && detect_version?(version, expected_version) end
def firefox_os?
def firefox_os? id == :firefox_os end
def id
def id subject.id end
def initialize(ua)
def initialize(ua) @ua = ua end
def ios?(expected_version = nil)
def ios?(expected_version = nil) id == :ios && detect_version?(version, expected_version) end
def ios_app?
def ios_app? ios? && !ua.include?("Safari") end
def ios_webview?
def ios_webview? ios_app? end
def kai_os?
def kai_os? id == :kai_os end
def linux?
def linux? id == :linux end
def mac?(expected_version = nil)
def mac?(expected_version = nil) id == :mac && detect_version?(version, expected_version) end
def name
def name subject.name end
def subject
def subject @subject ||= self.class.matchers .map {|matcher| matcher.new(ua, self) } .find(&:match?) end
def to_s
def to_s id.to_s end
def unknown?
def unknown? id == :unknown_platform end
def version
def version subject.version end
def windows10?
def windows10? windows? && ua.include?("Windows NT 10") end
def windows7?
def windows7? windows? && ua.include?("Windows NT 6.1") end
def windows8?
def windows8? windows? && ua.match?(/Windows NT 6\.[2-3]/) end
def windows8_1?
def windows8_1? windows? && ua.include?("Windows NT 6.3") end
def windows?(expected_version = nil)
def windows?(expected_version = nil) id == :windows && detect_version?(version, expected_version) end
def windows_mobile?(expected_version = nil)
def windows_mobile?(expected_version = nil) id == :windows_mobile && detect_version?(version, expected_version) end
def windows_phone?(expected_version = nil)
def windows_phone?(expected_version = nil) id == :windows_phone && detect_version?(version, expected_version) end
def windows_rt?
def windows_rt? windows8? && ua.include?("ARM") end
def windows_touchscreen_desktop?
def windows_touchscreen_desktop? windows? && ua.include?("Touch") end
def windows_vista?
def windows_vista? windows? && ua.include?("Windows NT 6.0") end
def windows_wow64?
def windows_wow64? windows? && ua.match?(/WOW64/i) end
def windows_x64?
def windows_x64? windows? && ua.match?(/(Win64|x64|Windows NT 5\.2)/) end
def windows_x64_inclusive?
def windows_x64_inclusive? windows_x64? || windows_wow64? end
def windows_xp?
def windows_xp? windows? && ua.match?(/Windows NT 5\.[12]/) end