class Browser module Platform # Detect if browser is Android. def android?(version = nil) !!(ua =~ /Android/ && !opera?) && detect_version?(android_version, version) end # Detect Android version. def android_version ua[/Android ([\d.]+)/, 1] end # Return the iOS version. def ios_version ua[/OS (\d)/, 1] end # Detect if running on iOS app webview. def ios_app? ios? && !ua.include?("Safari") end # Detect if is iOS webview. def ios_webview? ios_app? end # Detect if browser is ios?. def ios?(version = nil) (ipod? || ipad? || iphone?) && detect_version?(ios_version, version) end # Detect if is iOS4. def ios4? deprecate "Browser##{__method__} is deprecated; use Browser#ios?(version) instead" ios?(4) end # Detect if is iOS5. def ios5? deprecate "Browser##{__method__} is deprecated; use Browser#ios?(version) instead" ios?(5) end # Detect if is iOS6. def ios6? deprecate "Browser##{__method__} is deprecated; use Browser#ios?(version) instead" ios?(6) end # Detect if is iOS7. def ios7? deprecate "Browser##{__method__} is deprecated; use Browser#ios?(version) instead" ios?(7) end # Detect if is iOS8. def ios8? deprecate "Browser##{__method__} is deprecated; use Browser#ios?(version) instead" ios?(8) end # Detect if is iOS9. def ios9? deprecate "Browser##{__method__} is deprecated; use Browser#ios?(version) instead" ios?(9) end # Detect if current platform is Macintosh. def mac? !!(ua =~ /Mac OS X/ && !ios?) end # Detect if current platform is Windows. def windows? !!(ua =~ /Windows/) end ## More info here => http://msdn.microsoft.com/fr-FR/library/ms537503.aspx#PltToken def windows_xp? windows? && !!(ua =~ /Windows NT 5.1/) end def windows_vista? windows? && !!(ua =~ /Windows NT 6.0/) end def windows7? windows? && !!(ua =~ /Windows NT 6.1/) end def windows8? windows? && !!(ua =~ /Windows NT 6.[2-3]/) end def windows8_1? windows? && !!(ua =~ /Windows NT 6\.3/) end def windows10? windows? && !!(ua =~ /Windows NT 10/) end def windows_rt? windows8? && !!(ua =~ /ARM/) end # Detect if current platform is Windows Mobile. def windows_mobile? !!(ua =~ /Windows CE/) end # Detect if current platform is Windows Phone. def windows_phone? !!(ua =~ /Windows Phone/) end # Detect if current platform is Windows in 64-bit architecture. def windows_x64? !!(windows? && ua =~ /(Win64|x64)/) end def windows_wow64? windows? && !!(ua =~ /WOW64/i) end def windows_x64_inclusive? windows_x64? || windows_wow64? end # Detect if current platform is Linux flavor. def linux? !!(ua =~ /Linux/) end # Detect if current platform is ChromeOS def chrome_os? !!(ua =~ /CrOS/) end # Return the platform. def platform case when linux? then :linux when mac? then :mac when windows? then :windows else :other end end end end