module Browser
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
frozen_string_literal: true
Constants
- EMPTY_STRING
- VERSION
Public Class Methods
# File lib/browser/testing.rb, line 21 def self.[](key) user_agents.fetch(key) end
# File lib/browser/testing.rb, line 13 def self.bot_user_agents @bot_user_agents ||= YAML.load_file(Browser.root.join("test/ua_bots.yml")) end
# File lib/browser/testing.rb, line 9 def self.browser_user_agents @browser_user_agents ||= YAML.load_file(Browser.root.join("test/ua.yml")) end
Hold the list of browser matchers. Order is important.
# File lib/browser.rb, line 84 def self.matchers @matchers ||= [ Nokia, UCBrowser, PhantomJS, BlackBerry, Opera, Edge, InternetExplorer, Firefox, Chrome, Safari, Generic ] end
Define the rules which define a modern browser. A rule must be a proc/lambda or any object that implements the method
and accepts the browser object.¶ ↑
To redefine all rules, clear the existing rules before adding your own.
# Only Chrome Canary is considered modern. Browser.modern_rules.clear Browser.modern_rules << -> b { b.chrome? && b.version >= "37" }
# File lib/browser.rb, line 110 def self.modern_rules @modern_rules ||= [] end
# File lib/browser.rb, line 123 def self.new(user_agent, **kwargs) matchers .map {|klass| klass.new(user_agent || EMPTY_STRING, **kwargs) } .find(&:match?) end
# File lib/browser.rb, line 78 def self.root @root ||= Pathname.new(File.expand_path("../..", __FILE__)) end
# File lib/browser/testing.rb, line 17 def self.search_engine_user_agents @search_engine_user_agents ||= YAML.load_file(Browser.root.join("test/ua_search_engines.yml")) end
# File lib/browser/testing.rb, line 3 def self.user_agents @user_agents ||= browser_user_agents .merge(bot_user_agents) .merge(search_engine_user_agents) end
Private Instance Methods
# File lib/browser.rb, line 131 def deprecate(message) offender = caller[1].to_s[/^(.*?\.rb:\d+).*?$/, 1] $stderr << "\n#{message} (called from #{offender})\n" end