Class: Browser::Base
- Inherits:
-
Object
- Object
- Browser::Base
- Includes:
- DetectVersion
- Defined in:
- lib/browser/base.rb
Direct Known Subclasses
BlackBerry, Chrome, Device::PSP, Device::TV, Device::Wii, Firefox, Generic, InternetExplorer, Meta::IE, Meta::IOS, Meta::Id, MicroMessenger, Nokia, Opera, PhantomJS, Platform::IOS, Platform::Mac, QQ, Safari, UCBrowser, Weibo
Instance Attribute Summary collapse
-
#accept_language ⇒ Object
readonly
Return an array with all preferred languages that this browser accepts.
-
#ua ⇒ Object
readonly
Returns the value of attribute ua.
Instance Method Summary collapse
-
#bot ⇒ Object
Return the bot info.
-
#bot? ⇒ Boolean
Detect if current user agent is from a bot.
-
#chrome? ⇒ Boolean
Detect if browser is Chrome.
- #compatibility_view? ⇒ Boolean
-
#core_media? ⇒ Boolean
Detect if browser is Apple CoreMedia.
-
#device ⇒ Object
Return the device info.
-
#edge? ⇒ Boolean
Detect if browser is Microsoft Edge.
-
#firefox? ⇒ Boolean
Detect if browser is Firefox.
-
#ie?(expected_version = nil) ⇒ Boolean
Detect if browser is Microsoft Internet Explorer.
-
#initialize(ua, accept_language: nil) ⇒ Base
constructor
A new instance of Base.
- #known? ⇒ Boolean
-
#meta ⇒ Object
(also: #to_a)
Return a meta info about this browser.
-
#micro_messenger? ⇒ Boolean
(also: #wechat?)
Detect if browser is MicroMessenger.
-
#modern? ⇒ Boolean
Return true if browser is modern (Webkit, Firefox 17+, IE9+, Opera 12+).
- #msie_full_version ⇒ Object
- #msie_version ⇒ Object
-
#nokia? ⇒ Boolean
Detect if browser is Nokia S40 Ovi Browser.
-
#opera? ⇒ Boolean
Detect if browser is Opera.
-
#opera_mini? ⇒ Boolean
Detect if browser is Opera Mini.
-
#phantom_js? ⇒ Boolean
Detect if browser is PhantomJS.
-
#platform ⇒ Object
Return the platform.
-
#proxy? ⇒ Boolean
Detect if browser is a proxy browser.
-
#quicktime? ⇒ Boolean
Detect if browser is QuickTime.
-
#safari?(expected_version = nil) ⇒ Boolean
Detect if browser is Safari.
- #safari_webapp_mode? ⇒ Boolean
-
#to_s ⇒ Object
Return meta representation as string.
-
#uc_browser? ⇒ Boolean
Detect if browser is UCBrowser.
- #version ⇒ Object
-
#webkit? ⇒ Boolean
Detect if browser is WebKit-based.
- #webkit_full_version ⇒ Object
- #weibo? ⇒ Boolean
-
#yandex? ⇒ Boolean
Detect if browser is Yandex.
Constructor Details
#initialize(ua, accept_language: nil) ⇒ Base
Returns a new instance of Base.
11 12 13 14 |
# File 'lib/browser/base.rb', line 11 def initialize(ua, accept_language: nil) @ua = ua @accept_language = AcceptLanguage.parse(accept_language) end |
Instance Attribute Details
#accept_language ⇒ Object (readonly)
Return an array with all preferred languages that this browser accepts.
9 10 11 |
# File 'lib/browser/base.rb', line 9 def accept_language @accept_language end |
#ua ⇒ Object (readonly)
Returns the value of attribute ua.
6 7 8 |
# File 'lib/browser/base.rb', line 6 def ua @ua end |
Instance Method Details
#bot ⇒ Object
Return the bot info.
38 39 40 |
# File 'lib/browser/base.rb', line 38 def bot @bot ||= Bot.new(ua) end |
#bot? ⇒ Boolean
Detect if current user agent is from a bot.
43 44 45 |
# File 'lib/browser/base.rb', line 43 def bot? bot.bot? end |
#chrome? ⇒ Boolean
Detect if browser is Chrome.
115 116 117 |
# File 'lib/browser/base.rb', line 115 def chrome? Chrome.new(ua).match? end |
#compatibility_view? ⇒ Boolean
68 69 70 |
# File 'lib/browser/base.rb', line 68 def compatibility_view? false end |
#core_media? ⇒ Boolean
Detect if browser is Apple CoreMedia.
91 92 93 |
# File 'lib/browser/base.rb', line 91 def core_media? ua =~ /CoreMedia/ end |
#device ⇒ Object
Return the device info.
48 49 50 |
# File 'lib/browser/base.rb', line 48 def device @device ||= Device.new(ua) end |
#edge? ⇒ Boolean
Detect if browser is Microsoft Edge.
64 65 66 |
# File 'lib/browser/base.rb', line 64 def edge? Edge.new(ua).match? end |
#firefox? ⇒ Boolean
Detect if browser is Firefox.
110 111 112 |
# File 'lib/browser/base.rb', line 110 def firefox? Firefox.new(ua).match? end |
#ie?(expected_version = nil) ⇒ Boolean
Detect if browser is Microsoft Internet Explorer.
58 59 60 61 |
# File 'lib/browser/base.rb', line 58 def ie?(expected_version = nil) InternetExplorer.new(ua).match? && detect_version?(version, expected_version) end |
#known? ⇒ Boolean
159 160 161 |
# File 'lib/browser/base.rb', line 159 def known? id != :generic end |
#meta ⇒ Object Also known as: to_a
Return a meta info about this browser.
17 18 19 |
# File 'lib/browser/base.rb', line 17 def Meta.get(self) end |
#micro_messenger? ⇒ Boolean Also known as: wechat?
Detect if browser is MicroMessenger.
140 141 142 |
# File 'lib/browser/base.rb', line 140 def micro_messenger? MicroMessenger.new(ua).match? end |
#modern? ⇒ Boolean
Return true if browser is modern (Webkit, Firefox 17+, IE9+, Opera 12+).
53 54 55 |
# File 'lib/browser/base.rb', line 53 def modern? Browser.modern_rules.any? {|rule| rule === self } # rubocop:disable Metrics/LineLength, Style/CaseEquality end |
#msie_full_version ⇒ Object
72 73 74 |
# File 'lib/browser/base.rb', line 72 def msie_full_version "0.0" end |
#msie_version ⇒ Object
76 77 78 |
# File 'lib/browser/base.rb', line 76 def msie_version "0" end |
#nokia? ⇒ Boolean
Detect if browser is Nokia S40 Ovi Browser.
135 136 137 |
# File 'lib/browser/base.rb', line 135 def nokia? Nokia.new(ua).match? end |
#opera? ⇒ Boolean
Detect if browser is Opera.
120 121 122 |
# File 'lib/browser/base.rb', line 120 def opera? Opera.new(ua).match? end |
#opera_mini? ⇒ Boolean
Detect if browser is Opera Mini.
151 152 153 |
# File 'lib/browser/base.rb', line 151 def opera_mini? ua =~ /Opera Mini/ end |
#phantom_js? ⇒ Boolean
Detect if browser is PhantomJS
96 97 98 |
# File 'lib/browser/base.rb', line 96 def phantom_js? PhantomJS.new(ua).match? end |
#platform ⇒ Object
Return the platform.
33 34 35 |
# File 'lib/browser/base.rb', line 33 def platform @platform ||= Platform.new(ua) end |
#proxy? ⇒ Boolean
Detect if browser is a proxy browser.
164 165 166 |
# File 'lib/browser/base.rb', line 164 def proxy? nokia? || uc_browser? || opera_mini? end |
#quicktime? ⇒ Boolean
Detect if browser is QuickTime
86 87 88 |
# File 'lib/browser/base.rb', line 86 def quicktime? ua =~ /QuickTime/i end |
#safari?(expected_version = nil) ⇒ Boolean
Detect if browser is Safari.
101 102 103 |
# File 'lib/browser/base.rb', line 101 def safari?(expected_version = nil) Safari.new(ua).match? && detect_version?(version, expected_version) end |
#safari_webapp_mode? ⇒ Boolean
105 106 107 |
# File 'lib/browser/base.rb', line 105 def safari_webapp_mode? (device.ipad? || device.iphone?) && ua =~ /AppleWebKit/ end |
#to_s ⇒ Object
Return meta representation as string.
24 25 26 |
# File 'lib/browser/base.rb', line 24 def to_s .to_a.join(" ") end |
#uc_browser? ⇒ Boolean
Detect if browser is UCBrowser.
130 131 132 |
# File 'lib/browser/base.rb', line 130 def uc_browser? UCBrowser.new(ua).match? end |
#version ⇒ Object
28 29 30 |
# File 'lib/browser/base.rb', line 28 def version full_version.split(".").first end |
#webkit? ⇒ Boolean
Detect if browser is WebKit-based.
81 82 83 |
# File 'lib/browser/base.rb', line 81 def webkit? ua =~ /AppleWebKit/i && !edge? end |
#webkit_full_version ⇒ Object
155 156 157 |
# File 'lib/browser/base.rb', line 155 def webkit_full_version ua[%r[AppleWebKit/([\d.]+)], 1] || "0.0" end |
#weibo? ⇒ Boolean
146 147 148 |
# File 'lib/browser/base.rb', line 146 def weibo? Weibo.new(ua).match? end |
#yandex? ⇒ Boolean
Detect if browser is Yandex.
125 126 127 |
# File 'lib/browser/base.rb', line 125 def yandex? ua =~ /YaBrowser/ end |