module Browser::Platform
def android?
def android? !!(ua =~ /Android/ && !opera?) end
def blackberry10?
def blackberry10? !!(ua =~ /BB10/) end
def blackberry4?
def blackberry4? blackberry? && !!(ua =~ %r[BlackBerry\d+/4]) end
def blackberry5?
def blackberry5? blackberry? && !!(ua =~ %r[BlackBerry\d+/5]) end
def blackberry6?
def blackberry6? blackberry? && !!(ua =~ %r[Version/6]) end
def blackberry7?
def blackberry7? blackberry? && !!(ua =~ %r[Version/7]) end
def chrome_os?
def chrome_os? !!(ua =~ /CrOS/) end
def ios4?
def ios4? ios? && !!(ua =~ /OS 4/) end
def ios5?
def ios5? ios? && !!(ua =~ /OS 5/) end
def ios6?
def ios6? ios? && !!(ua =~ /OS 6/) end
def ios7?
def ios7? ios? && !!(ua =~ /OS 7/) end
def ios8?
def ios8? ios? && !!(ua =~ /OS 8/) end
def ios?
def ios? ipod? || ipad? || iphone? end
def linux?
def linux? !!(ua =~ /Linux/) end
def mac?
def mac? !!(ua =~ /Mac OS X/ && !ios?) end
def platform
def platform case when linux? then :linux when mac? then :mac when windows? then :windows else :other end end
def windows10?
def windows10? windows? && !!(ua =~ /Windows NT 10/) end
def windows7?
def windows7? windows? && !!(ua =~ /Windows NT 6.1/) end
def windows8?
def windows8? windows? && !!(ua =~ /Windows NT 6.[2-3]/) end
def windows8_1?
def windows8_1? windows? && !!(ua =~ /Windows NT 6\.3/) end
def windows?
def windows? !!(ua =~ /Windows/) end
def windows_mobile?
def windows_mobile? !!(ua =~ /Windows CE/) end
def windows_phone?
def windows_phone? !!(ua =~ /Windows Phone/) end
def windows_rt?
def windows_rt? windows8? && !!(ua =~ /ARM/) end
def windows_vista?
def windows_vista? windows? && !!(ua =~ /Windows NT 6.0/) end
def windows_wow64?
def windows_wow64? windows? && !!(ua =~ /WOW64/i) end
def windows_x64?
def windows_x64? windows? && !!(ua =~ /(Win64|x64)/) && !!(ua =~ /x64/) end
def windows_x64_inclusive?
def windows_x64_inclusive? windows_x64? || windows_wow64? end
def windows_xp?
def windows_xp? windows? && !!(ua =~ /Windows NT 5.1/) end