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, Nokia, Opera, PhantomJS, Platform::IOS, Platform::Mac, Safari, UCBrowser
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.
-
#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
-
#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.
41 42 43 |
# File 'lib/browser/base.rb', line 41 def bot @bot ||= Bot.new(ua) end |
#bot? ⇒ Boolean
Detect if current user agent is from a bot.
46 47 48 |
# File 'lib/browser/base.rb', line 46 def bot? bot.bot? end |
#chrome? ⇒ Boolean
Detect if browser is Chrome.
118 119 120 |
# File 'lib/browser/base.rb', line 118 def chrome? Chrome.new(ua).match? end |
#compatibility_view? ⇒ Boolean
71 72 73 |
# File 'lib/browser/base.rb', line 71 def compatibility_view? false end |
#core_media? ⇒ Boolean
Detect if browser is Apple CoreMedia.
94 95 96 |
# File 'lib/browser/base.rb', line 94 def core_media? ua =~ /CoreMedia/ end |
#device ⇒ Object
Return the device info.
51 52 53 |
# File 'lib/browser/base.rb', line 51 def device @device ||= Device.new(ua) end |
#edge? ⇒ Boolean
Detect if browser is Microsoft Edge.
67 68 69 |
# File 'lib/browser/base.rb', line 67 def edge? Edge.new(ua).match? end |
#firefox? ⇒ Boolean
Detect if browser is Firefox.
113 114 115 |
# File 'lib/browser/base.rb', line 113 def firefox? Firefox.new(ua).match? end |
#ie?(expected_version = nil) ⇒ Boolean
Detect if browser is Microsoft Internet Explorer.
61 62 63 64 |
# File 'lib/browser/base.rb', line 61 def ie?(expected_version = nil) InternetExplorer.new(ua).match? && detect_version?(version, expected_version) end |
#known? ⇒ Boolean
151 152 153 |
# File 'lib/browser/base.rb', line 151 def known? id != :generic end |
#meta ⇒ Object Also known as: to_a
Return a meta info about this browser.
17 18 19 20 21 22 |
# File 'lib/browser/base.rb', line 17 def Meta.constants.each_with_object(Set.new) do |, | = Meta.const_get() .merge(.new(self).to_a) end.to_a end |
#modern? ⇒ Boolean
Return true if browser is modern (Webkit, Firefox 17+, IE9+, Opera 12+).
56 57 58 |
# File 'lib/browser/base.rb', line 56 def modern? Browser.modern_rules.any? {|rule| rule === self } # rubocop:disable Metrics/LineLength, Style/CaseEquality end |
#msie_full_version ⇒ Object
75 76 77 |
# File 'lib/browser/base.rb', line 75 def msie_full_version "0.0" end |
#msie_version ⇒ Object
79 80 81 |
# File 'lib/browser/base.rb', line 79 def msie_version "0" end |
#nokia? ⇒ Boolean
Detect if browser is Nokia S40 Ovi Browser.
138 139 140 |
# File 'lib/browser/base.rb', line 138 def nokia? Nokia.new(ua).match? end |
#opera? ⇒ Boolean
Detect if browser is Opera.
123 124 125 |
# File 'lib/browser/base.rb', line 123 def opera? Opera.new(ua).match? end |
#opera_mini? ⇒ Boolean
Detect if browser is Opera Mini.
143 144 145 |
# File 'lib/browser/base.rb', line 143 def opera_mini? ua =~ /Opera Mini/ end |
#phantom_js? ⇒ Boolean
Detect if browser is PhantomJS
99 100 101 |
# File 'lib/browser/base.rb', line 99 def phantom_js? PhantomJS.new(ua).match? end |
#platform ⇒ Object
Return the platform.
36 37 38 |
# File 'lib/browser/base.rb', line 36 def platform @platform ||= Platform.new(ua) end |
#proxy? ⇒ Boolean
Detect if browser is a proxy browser.
156 157 158 |
# File 'lib/browser/base.rb', line 156 def proxy? nokia? || uc_browser? || opera_mini? end |
#quicktime? ⇒ Boolean
Detect if browser is QuickTime
89 90 91 |
# File 'lib/browser/base.rb', line 89 def quicktime? ua =~ /QuickTime/i end |
#safari?(expected_version = nil) ⇒ Boolean
Detect if browser is Safari.
104 105 106 |
# File 'lib/browser/base.rb', line 104 def safari?(expected_version = nil) Safari.new(ua).match? && detect_version?(version, expected_version) end |
#safari_webapp_mode? ⇒ Boolean
108 109 110 |
# File 'lib/browser/base.rb', line 108 def safari_webapp_mode? (device.ipad? || device.iphone?) && ua =~ /AppleWebKit/ end |
#to_s ⇒ Object
Return meta representation as string.
27 28 29 |
# File 'lib/browser/base.rb', line 27 def to_s .to_a.join(" ") end |
#uc_browser? ⇒ Boolean
Detect if browser is UCBrowser.
133 134 135 |
# File 'lib/browser/base.rb', line 133 def uc_browser? UCBrowser.new(ua).match? end |
#version ⇒ Object
31 32 33 |
# File 'lib/browser/base.rb', line 31 def version full_version.split(".").first end |
#webkit? ⇒ Boolean
Detect if browser is WebKit-based.
84 85 86 |
# File 'lib/browser/base.rb', line 84 def webkit? ua =~ /AppleWebKit/i && !edge? end |
#webkit_full_version ⇒ Object
147 148 149 |
# File 'lib/browser/base.rb', line 147 def webkit_full_version ua[%r[AppleWebKit/([\d.]+)], 1] || "0.0" end |
#yandex? ⇒ Boolean
Detect if browser is Yandex.
128 129 130 |
# File 'lib/browser/base.rb', line 128 def yandex? ua =~ /YaBrowser/ end |