brauser 3.3.2 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/.travis-gemfile +4 -5
- data/.travis.yml +2 -2
- data/CHANGELOG.md +4 -0
- data/Gemfile +7 -8
- data/README.md +31 -95
- data/Rakefile +0 -1
- data/brauser.gemspec +4 -4
- data/default_definitions/browsers.rb +50 -0
- data/default_definitions/languages.rb +118 -0
- data/default_definitions/platforms.rb +24 -0
- data/doc/Brauser.html +6 -6
- data/doc/Brauser/Browser.html +3867 -580
- data/doc/Brauser/Definitions.html +537 -0
- data/doc/Brauser/Definitions/Base.html +342 -0
- data/doc/Brauser/Definitions/Browser.html +1047 -0
- data/doc/Brauser/Definitions/Language.html +496 -0
- data/doc/Brauser/Definitions/Platform.html +686 -0
- data/doc/Brauser/Hooks.html +2 -2
- data/doc/Brauser/Hooks/RubyOnRails.html +9 -9
- data/doc/Brauser/Parser.html +513 -0
- data/doc/Brauser/Value.html +601 -0
- data/doc/Brauser/Version.html +5 -5
- data/doc/_index.html +25 -108
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +33 -97
- data/doc/index.html +33 -97
- data/doc/method_list.html +72 -120
- data/doc/top-level-namespace.html +2 -2
- data/lib/brauser.rb +13 -15
- data/lib/brauser/browser.rb +195 -66
- data/lib/brauser/definitions/base.rb +71 -0
- data/lib/brauser/definitions/browser.rb +80 -0
- data/lib/brauser/definitions/language.rb +29 -0
- data/lib/brauser/definitions/platform.rb +42 -0
- data/lib/brauser/hooks.rb +1 -2
- data/lib/brauser/parser.rb +47 -0
- data/lib/brauser/value.rb +39 -0
- data/lib/brauser/version.rb +3 -4
- data/spec/brauser/browser_spec.rb +73 -564
- data/spec/brauser/default_definitions_spec.rb +129 -0
- data/spec/brauser/definitions/base_spec.rb +48 -0
- data/spec/brauser/definitions/browser_spec.rb +47 -0
- data/spec/brauser/definitions/language_spec.rb +18 -0
- data/spec/brauser/definitions/platform_spec.rb +36 -0
- data/spec/brauser/hooks_spec.rb +5 -6
- data/spec/brauser/parser_spec.rb +31 -0
- data/spec/brauser/value_spec.rb +34 -0
- data/spec/coverage_helper.rb +0 -1
- data/spec/spec_helper.rb +0 -1
- metadata +50 -23
- data/lib/brauser/browseable/attributes.rb +0 -95
- data/lib/brauser/browseable/general.rb +0 -104
- data/lib/brauser/browseable/parsing.rb +0 -127
- data/lib/brauser/browseable/partial_querying.rb +0 -116
- data/lib/brauser/browseable/querying.rb +0 -63
- data/lib/brauser/browseable/register.rb +0 -73
- data/lib/brauser/definition.rb +0 -80
- data/lib/brauser/definitions/browsers.rb +0 -68
- data/lib/brauser/definitions/languages.rb +0 -130
- data/lib/brauser/definitions/platforms.rb +0 -30
- data/lib/brauser/query.rb +0 -36
- data/lib/brauser/queryable/chainers.rb +0 -56
- data/lib/brauser/queryable/queries.rb +0 -60
- data/spec/brauser/definition_spec.rb +0 -39
- data/spec/brauser/query_spec.rb +0 -111
@@ -1,73 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
-
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
-
#
|
6
|
-
|
7
|
-
module Brauser
|
8
|
-
# The interface of brauser browsers.
|
9
|
-
module Browseable
|
10
|
-
# Methods for register recognized browsers, versions and platforms.
|
11
|
-
module Register
|
12
|
-
extend ActiveSupport::Concern
|
13
|
-
|
14
|
-
# Class methods.
|
15
|
-
module ClassMethods
|
16
|
-
# Adds a definitions for recognition.
|
17
|
-
#
|
18
|
-
# @param type [Symbol] The type of the definition. Can be `:browsers`, `:platforms` or `:languages`.
|
19
|
-
# @param definition [Definition|Array] The definition to add. Can be also an array of definitions.
|
20
|
-
# @return [Boolean] `true` if at least one definition has been added, `false` otherwise.
|
21
|
-
def add(type, definition)
|
22
|
-
rv = false
|
23
|
-
|
24
|
-
if [:browsers, :platforms, :languages].include?(type)
|
25
|
-
prepare_definitions_for(type)
|
26
|
-
|
27
|
-
definition.ensure_array.each do |d|
|
28
|
-
next unless d.is_a?(::Brauser::Definition)
|
29
|
-
@definitions[type][d.tag] = d
|
30
|
-
rv = true
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
rv
|
35
|
-
end
|
36
|
-
|
37
|
-
# Adds definitions for a default list of browsers that can be recognized.
|
38
|
-
#
|
39
|
-
# @return [Boolean] `true` if at least one browser has been added, `false` otherwise.
|
40
|
-
def add_default_browsers
|
41
|
-
add(:browsers, (
|
42
|
-
::Brauser::Browseable::DefaultDefinitions::MOBILE_BROWSERS + ::Brauser::Browseable::DefaultDefinitions::MAJOR_DESKTOP_BROWSERS +
|
43
|
-
::Brauser::Browseable::DefaultDefinitions::MSIE_BROWSERS + ::Brauser::Browseable::DefaultDefinitions::MINOR_DESKTOP_BROWSERS
|
44
|
-
).map { |browser| ::Brauser::Definition.send(:new, *browser) })
|
45
|
-
end
|
46
|
-
|
47
|
-
# Adds a default list of platforms that can be recognized.
|
48
|
-
#
|
49
|
-
# @return [Boolean] `true` if at least one platform has been added, `false` otherwise.
|
50
|
-
def add_default_platforms
|
51
|
-
add(:platforms, ::Brauser::Browseable::DefaultDefinitions::PLATFORMS.map { |platform| ::Brauser::Definition.send(:new, *platform) })
|
52
|
-
end
|
53
|
-
|
54
|
-
# Adds a default list of languages that can be recognized.
|
55
|
-
#
|
56
|
-
# @return [Boolean] `true` if at least one language has been added, `false` otherwise.
|
57
|
-
def add_default_languages
|
58
|
-
add(:languages, ::Brauser::Browseable::DefaultDefinitions::LANGUAGES.map { |code, name| ::Brauser::Definition.new(code, name, code) })
|
59
|
-
end
|
60
|
-
|
61
|
-
private
|
62
|
-
|
63
|
-
# Prepares definition for a specific type.
|
64
|
-
#
|
65
|
-
# @param type [Symbol] The type to prepare.
|
66
|
-
def prepare_definitions_for(type)
|
67
|
-
@definitions ||= {}
|
68
|
-
@definitions[type] ||= {}
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
data/lib/brauser/definition.rb
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
-
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
-
#
|
6
|
-
|
7
|
-
module Brauser
|
8
|
-
# A class which hold a definition of a browser, a platform or a language
|
9
|
-
# This class represents a detection of the current user browser.
|
10
|
-
#
|
11
|
-
# @attribute tag
|
12
|
-
# @return [String|Symbol] An identifier for this definition.
|
13
|
-
# @attribute label
|
14
|
-
# @return [String] A human readable label for this definition.
|
15
|
-
# @attribute primary
|
16
|
-
# @return [String|Symbol|Proc] The primary matcher of this definition. Used to match browser engine, platform name and language.
|
17
|
-
# @attribute secondary
|
18
|
-
# @return [String|Symbol|Proc] The secondary matcher of this definition. Used to match browser version.
|
19
|
-
class Definition
|
20
|
-
attr_accessor :tag, :label, :primary, :secondary
|
21
|
-
|
22
|
-
# Creates a new definition.
|
23
|
-
#
|
24
|
-
# @param tag [String|Symbol] An identifier for this definition.
|
25
|
-
# @param label [String] A human readable label for this definition.
|
26
|
-
# @param primary [String|Symbol|Proc] The primary matcher of this definition.
|
27
|
-
# @param secondary [String|Symbol|Proc] The secondary matcher of this definition.
|
28
|
-
def initialize(tag = nil, label = nil, primary = nil, secondary = nil)
|
29
|
-
self.tag = tag if tag
|
30
|
-
self.label = label if label
|
31
|
-
self.primary = primary if primary
|
32
|
-
self.secondary = secondary if secondary
|
33
|
-
end
|
34
|
-
|
35
|
-
# Performs a match of this definition.
|
36
|
-
#
|
37
|
-
# @param type [Symbol] The matcher to perform. Can be `:primary` (default) or `:secondary`.
|
38
|
-
# @param args [Array] Arguments to pass to the matcher. The first is the definition itself.
|
39
|
-
# @return [Object|NilClass] A match if matcher succeeded, `nil` otherwise.
|
40
|
-
def match(type, *args)
|
41
|
-
begin
|
42
|
-
matcher = send(type || :primary)
|
43
|
-
rescue NoMethodError
|
44
|
-
nil
|
45
|
-
end
|
46
|
-
|
47
|
-
perform_match(matcher, args[1], args)
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
# Recognizes a browser disambiguating against another.
|
53
|
-
#
|
54
|
-
# @param agent [String] The agent to match.
|
55
|
-
# @param positive_matcher [Regexp] The expression to match.
|
56
|
-
# @param negative_matcher [Regexp] The expression NOT to match.
|
57
|
-
# @return [Boolean] `true` if matching succeeded, `false otherwise`.
|
58
|
-
def self.disambiguate_browser(agent, positive_matcher, negative_matcher)
|
59
|
-
agent =~ positive_matcher && agent !~ negative_matcher
|
60
|
-
end
|
61
|
-
|
62
|
-
# Performs a match against a target.
|
63
|
-
#
|
64
|
-
# @param matcher [Object] The matcher to run, can be a `Regexp`, a `Proc` or a string.
|
65
|
-
# @param target [String] The string to match.
|
66
|
-
# @param args [Array] Arguments to pass to the matcher. The first is definition itself.
|
67
|
-
# @return [Object|NilClass] A match if matcher succeeded, `nil` otherwise.
|
68
|
-
def perform_match(matcher, target, args)
|
69
|
-
if matcher.is_a?(::Regexp)
|
70
|
-
matcher.match(target)
|
71
|
-
elsif matcher.respond_to?(:call)
|
72
|
-
matcher.call(*args)
|
73
|
-
elsif target == matcher
|
74
|
-
target
|
75
|
-
else
|
76
|
-
nil
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
-
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
-
#
|
6
|
-
|
7
|
-
module Brauser
|
8
|
-
# The interface of brauser browsers.
|
9
|
-
module Browseable
|
10
|
-
# The default browsers definitions.
|
11
|
-
module DefaultDefinitions
|
12
|
-
# Default mobile browsers.
|
13
|
-
MOBILE_BROWSERS = [
|
14
|
-
[:coremedia, "Apple CoreMedia", /coremedia/i, /.+CoreMedia v([a-z0-9.]+)/i],
|
15
|
-
|
16
|
-
[:opera_mobile, "Opera Mobile", /opera mobi/i, /.+Opera Mobi.+((.+Opera )|(Version\/))([a-z0-9.]+)/i],
|
17
|
-
[:opera, "Opera", /opera/i, proc { |_, agent|
|
18
|
-
version = ((agent !~ /wii/i) ? /((.+Opera )|(Version\/))(?<version>[a-z0-9.]+)/i : /(.+Nintendo Wii; U; ; )(?<version>[a-z0-9.]+)/i).match(agent)
|
19
|
-
version ? version["version"] : nil
|
20
|
-
}],
|
21
|
-
|
22
|
-
[:android, "Android", /android/i, /(.+Android )([a-z0-9.]+)/i],
|
23
|
-
[:blackberry, "RIM BlackBerry", /blackberry/i, /(.+Version\/)([a-z0-9.]+)/i],
|
24
|
-
[:kindle, "Amazon Kindle", /(kindle)/i, /(.+(Kindle|Silk)\/)([a-z0-9.]+)/i],
|
25
|
-
[:psp, "Sony Playstation Portable", /psp/i, /(.+PlayStation Portable\); )([a-z0-9.]+)/i],
|
26
|
-
[:ps3, "Sony Playstation 3", /playstation 3/i, /(.+PLAYSTATION 3; )([a-z0-9.]+)/i],
|
27
|
-
[:windows_phone, "Microsoft Windows Phone", /windows phone/i, /(.+IEMobile\/)([a-z0-9.]+)/i],
|
28
|
-
[:wii, "Nintendo Wii", /nintendo wii/, /(.+Nintendo Wii; U; ; )([a-z0-9.]+)/i],
|
29
|
-
|
30
|
-
[:chrome_ios, "Chrome iOS", /crios/i, /(.+CriOS\/)([a-z0-9.]+)/i],
|
31
|
-
[:ipod, "Apple iPod", /ipod/i, /(.+Version\/)([a-z0-9.]+)/i],
|
32
|
-
[:iphone, "Apple iPhone", /iphone/i, /(.+Version\/)([a-z0-9.]+)/i],
|
33
|
-
[:ipad, "Apple iPad", /ipad/i, /(.+Version\/)([a-z0-9.]+)/i],
|
34
|
-
|
35
|
-
[:mobile, "Other Mobile Browser", /(mobile|symbian|midp|windows ce)/i, /.+\/([a-z0-9.]+)/i]
|
36
|
-
]
|
37
|
-
|
38
|
-
# Default major desktop browsers.
|
39
|
-
MAJOR_DESKTOP_BROWSERS = [
|
40
|
-
[:chrome, "Google Chrome", /((chrome)|(chromium))/i, /(.+Chrom[a-z]+\/)([a-z0-9.]+)/i],
|
41
|
-
[:netscape, "Netscape Navigator", /(netscape|navigator)\//i, /((Netscape|Navigator)\/)([a-z0-9.]+)/i],
|
42
|
-
[:firefox, "Mozilla Firefox", /firefox/i, /(.+Firefox\/)([a-z0-9.]+)/i],
|
43
|
-
[:safari, "Apple Safari", proc { |_, agent|
|
44
|
-
Brauser::Definition.disambiguate_browser(agent, /safari/i, /((chrome)|(chromium)|(crios))/i)
|
45
|
-
}, /(.+Version\/)([a-z0-9.]+)/i]
|
46
|
-
]
|
47
|
-
|
48
|
-
# Default Microsoft Internet Explorer browsers.
|
49
|
-
MSIE_BROWSERS = [
|
50
|
-
[:msie_compatibility, "Microsoft Internet Explorer (Compatibility View)", /(msie 7\.0).+(trident)/i, proc { |_, agent|
|
51
|
-
version = /(.+trident\/)(?<version>[a-z0-9.]+)/i.match(agent)["version"].split(".")
|
52
|
-
version[0] = version[0].to_integer + 4
|
53
|
-
version.join(".")
|
54
|
-
}],
|
55
|
-
[:msie, "Microsoft Internet Explorer", proc {
|
56
|
-
|_, agent| Brauser::Definition.disambiguate_browser(agent, /trident|msie/i, /opera/i)
|
57
|
-
}, /(.+MSIE |trident.+rv:)([a-z0-9.]+)/i]
|
58
|
-
]
|
59
|
-
|
60
|
-
# Default minor desktop browsers.
|
61
|
-
MINOR_DESKTOP_BROWSERS = [
|
62
|
-
[:quicktime, "Apple QuickTime", /quicktime/i, /(.+((QuickTime\/)|(qtver=)))([a-z0-9.]+)/i],
|
63
|
-
[:webkit, "WebKit Browser", /webkit/i, /(.+WebKit\/)([a-z0-9.]+)/i],
|
64
|
-
[:gecko, "Gecko Browser", /gecko/i, /(.+rv:|Gecko\/)([a-z0-9.]+)/i]
|
65
|
-
]
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,130 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
-
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
-
#
|
6
|
-
|
7
|
-
module Brauser
|
8
|
-
# The interface of brauser browsers.
|
9
|
-
module Browseable
|
10
|
-
# The default browsers definitions.
|
11
|
-
module DefaultDefinitions
|
12
|
-
# Default languages.
|
13
|
-
LANGUAGES = {
|
14
|
-
"af" => "Afrikaans",
|
15
|
-
"sq" => "Albanian",
|
16
|
-
"eu" => "Basque",
|
17
|
-
"bg" => "Bulgarian",
|
18
|
-
"be" => "Byelorussian",
|
19
|
-
"ca" => "Catalan",
|
20
|
-
"zh" => "Chinese",
|
21
|
-
"zh-cn" => "Chinese/China",
|
22
|
-
"zh-tw" => "Chinese/Taiwan",
|
23
|
-
"zh-hk" => "Chinese/Hong Kong",
|
24
|
-
"zh-sg" => "Chinese/singapore",
|
25
|
-
"hr" => "Croatian",
|
26
|
-
"cs" => "Czech",
|
27
|
-
"da" => "Danish",
|
28
|
-
"nl" => "Dutch",
|
29
|
-
"nl-nl" => "Dutch/Netherlands",
|
30
|
-
"nl-be" => "Dutch/Belgium",
|
31
|
-
"en" => "English",
|
32
|
-
"en-gb" => "English/United Kingdom",
|
33
|
-
"en-us" => "English/United States",
|
34
|
-
"en-au" => "English/Australian",
|
35
|
-
"en-ca" => "English/Canada",
|
36
|
-
"en-nz" => "English/New Zealand",
|
37
|
-
"en-ie" => "English/Ireland",
|
38
|
-
"en-za" => "English/South Africa",
|
39
|
-
"en-jm" => "English/Jamaica",
|
40
|
-
"en-bz" => "English/Belize",
|
41
|
-
"en-tt" => "English/Trinidad",
|
42
|
-
"et" => "Estonian",
|
43
|
-
"fo" => "Faeroese",
|
44
|
-
"fa" => "Farsi",
|
45
|
-
"fi" => "Finnish",
|
46
|
-
"fr" => "French",
|
47
|
-
"fr-be" => "French/Belgium",
|
48
|
-
"fr-fr" => "French/France",
|
49
|
-
"fr-ch" => "French/Switzerland",
|
50
|
-
"fr-ca" => "French/Canada",
|
51
|
-
"fr-lu" => "French/Luxembourg",
|
52
|
-
"gd" => "Gaelic",
|
53
|
-
"gl" => "Galician",
|
54
|
-
"de" => "German",
|
55
|
-
"de-at" => "German/Austria",
|
56
|
-
"de-de" => "German/Germany",
|
57
|
-
"de-ch" => "German/Switzerland",
|
58
|
-
"de-lu" => "German/Luxembourg",
|
59
|
-
"de-li" => "German/Liechtenstein",
|
60
|
-
"el" => "Greek",
|
61
|
-
"he" => "Hebrew",
|
62
|
-
"he-il" => "Hebrew/Israel",
|
63
|
-
"hi" => "Hindi",
|
64
|
-
"hu" => "Hungarian",
|
65
|
-
"ie-ee" => "Internet Explorer/Easter Egg",
|
66
|
-
"is" => "Icelandic",
|
67
|
-
"id" => "Indonesian",
|
68
|
-
"in" => "Indonesian",
|
69
|
-
"ga" => "Irish",
|
70
|
-
"it" => "Italian",
|
71
|
-
"it-ch" => "Italian/ Switzerland",
|
72
|
-
"ja" => "Japanese",
|
73
|
-
"km" => "Khmer",
|
74
|
-
"km-kh" => "Khmer/Cambodia",
|
75
|
-
"ko" => "Korean",
|
76
|
-
"lv" => "Latvian",
|
77
|
-
"lt" => "Lithuanian",
|
78
|
-
"mk" => "Macedonian",
|
79
|
-
"ms" => "Malaysian",
|
80
|
-
"mt" => "Maltese",
|
81
|
-
"no" => "Norwegian",
|
82
|
-
"pl" => "Polish",
|
83
|
-
"pt" => "Portuguese",
|
84
|
-
"pt-br" => "Portuguese/Brazil",
|
85
|
-
"rm" => "Rhaeto-Romanic",
|
86
|
-
"ro" => "Romanian",
|
87
|
-
"ro-mo" => "Romanian/Moldavia",
|
88
|
-
"ru" => "Russian",
|
89
|
-
"ru-mo" => "Russian /Moldavia",
|
90
|
-
"sr" => "Serbian",
|
91
|
-
"sk" => "Slovack",
|
92
|
-
"sl" => "Slovenian",
|
93
|
-
"sb" => "Sorbian",
|
94
|
-
"es" => "Spanish",
|
95
|
-
"es-do" => "Spanish",
|
96
|
-
"es-ar" => "Spanish/Argentina",
|
97
|
-
"es-co" => "Spanish/Colombia",
|
98
|
-
"es-mx" => "Spanish/Mexico",
|
99
|
-
"es-es" => "Spanish/Spain",
|
100
|
-
"es-gt" => "Spanish/Guatemala",
|
101
|
-
"es-cr" => "Spanish/Costa Rica",
|
102
|
-
"es-pa" => "Spanish/Panama",
|
103
|
-
"es-ve" => "Spanish/Venezuela",
|
104
|
-
"es-pe" => "Spanish/Peru",
|
105
|
-
"es-ec" => "Spanish/Ecuador",
|
106
|
-
"es-cl" => "Spanish/Chile",
|
107
|
-
"es-uy" => "Spanish/Uruguay",
|
108
|
-
"es-py" => "Spanish/Paraguay",
|
109
|
-
"es-bo" => "Spanish/Bolivia",
|
110
|
-
"es-sv" => "Spanish/El salvador",
|
111
|
-
"es-hn" => "Spanish/Honduras",
|
112
|
-
"es-ni" => "Spanish/Nicaragua",
|
113
|
-
"es-pr" => "Spanish/Puerto Rico",
|
114
|
-
"sx" => "Sutu",
|
115
|
-
"sv" => "Swedish",
|
116
|
-
"sv-se" => "Swedish/Sweden",
|
117
|
-
"sv-fi" => "Swedish/Finland",
|
118
|
-
"ts" => "Thai",
|
119
|
-
"tn" => "Tswana",
|
120
|
-
"tr" => "Turkish",
|
121
|
-
"uk" => "Ukrainian",
|
122
|
-
"ur" => "Urdu",
|
123
|
-
"vi" => "Vietnamese",
|
124
|
-
"xh" => "Xshosa",
|
125
|
-
"ji" => "Yiddish",
|
126
|
-
"zu" => "Zulu"
|
127
|
-
}
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
-
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
-
#
|
6
|
-
|
7
|
-
module Brauser
|
8
|
-
# The interface of brauser browsers.
|
9
|
-
module Browseable
|
10
|
-
# The default browsers definitions.
|
11
|
-
module DefaultDefinitions
|
12
|
-
# Default platforms.
|
13
|
-
PLATFORMS = [
|
14
|
-
[:symbian, "Symbian", /s60|symb/i],
|
15
|
-
[:windows_phone, "Microsoft Windows Phone", /windows phone/i],
|
16
|
-
[:kindle, "Nokia Symbian", /kindle|silk/i],
|
17
|
-
[:ios, "Apple iOS", proc { |_, agent| [:iphone, :ipad, :ipod, :chrome_ios].include?(name) || agent =~ /ipad|iphone|ipod|crios/i }],
|
18
|
-
[:android, "Android", /android/i],
|
19
|
-
[:blackberry, "RIM BlackBerry", /blackberry/i],
|
20
|
-
[:psp, "Sony Playstation Portable", /psp/i],
|
21
|
-
[:ps3, "Sony Playstation 3", /playstation 3/i],
|
22
|
-
[:wii, "Nintendo Wii", /wii/i],
|
23
|
-
|
24
|
-
[:linux, "Linux", /linux/i],
|
25
|
-
[:osx, "Apple MacOS X", /mac|macintosh|mac os x/i],
|
26
|
-
[:windows, "Microsoft Windows", /windows/i]
|
27
|
-
]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/brauser/query.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
-
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
-
#
|
6
|
-
|
7
|
-
module Brauser
|
8
|
-
# A query to a browser. This class enables concatenation, like:
|
9
|
-
#
|
10
|
-
# ```ruby
|
11
|
-
# Brauser::Browser.new.is(:msie).version(">= 7").on?(:windows)
|
12
|
-
# ```
|
13
|
-
#
|
14
|
-
# To end concatenation, use the `?` form of the queries or call `.result`.
|
15
|
-
#
|
16
|
-
# @attribute target
|
17
|
-
# @return [Browser] The current browser.
|
18
|
-
# @attribute result
|
19
|
-
# @return [Boolean] The current result.
|
20
|
-
class Query
|
21
|
-
attr_accessor :target
|
22
|
-
attr_accessor :result
|
23
|
-
|
24
|
-
include Brauser::Queryable::Chainers
|
25
|
-
include Brauser::Queryable::Queries
|
26
|
-
|
27
|
-
# Creates a new query.
|
28
|
-
#
|
29
|
-
# @param target [Browser] The current browser.
|
30
|
-
# @param result [Boolean] The current result.
|
31
|
-
def initialize(target, result = true)
|
32
|
-
@target = target
|
33
|
-
@result = result
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# This file is part of the brauser gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
-
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
-
#
|
6
|
-
|
7
|
-
module Brauser
|
8
|
-
# The interface of brauser queries.
|
9
|
-
module Queryable
|
10
|
-
# Methods to chain queries.
|
11
|
-
module Chainers
|
12
|
-
# Checks if the browser is a specific name and optionally of a specific version and platform.
|
13
|
-
#
|
14
|
-
# @see #version?
|
15
|
-
# @see #on?
|
16
|
-
#
|
17
|
-
# @param names [Symbol|Array] A list of specific names to match. Also, this meta-names are supported: `:capable` and `:tablet`.
|
18
|
-
# @param versions [Hash] An hash with specific version to match against. Need to be in any form that {#v} understands.
|
19
|
-
# @param platforms [Symbol|Array] A list of specific platform to match. Valid values are all those possible for the platform attribute.
|
20
|
-
# @return [Query] The query itself.
|
21
|
-
def is(names = [], versions = {}, platforms = [])
|
22
|
-
@result = is?(names, versions, platforms)
|
23
|
-
self
|
24
|
-
end
|
25
|
-
|
26
|
-
# Checks if the browser is a specific version.
|
27
|
-
#
|
28
|
-
# @param versions [String|Hash] A string in the form `operator version && ...` (example: `>= 7 && < 4`) or an hash with specific version to match against,
|
29
|
-
# in form `{:operator => version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
|
30
|
-
# @return [Query] The query itself.
|
31
|
-
def version(versions = {})
|
32
|
-
@result = version?(versions)
|
33
|
-
self
|
34
|
-
end
|
35
|
-
alias_method :v, :version
|
36
|
-
|
37
|
-
# Check if the browser is on a specific platform.
|
38
|
-
#
|
39
|
-
# @param platforms [Symbol|Array] A list of specific platform to match.
|
40
|
-
# @return [Query] The query itself.
|
41
|
-
def on(platforms = [])
|
42
|
-
@result = on?(platforms)
|
43
|
-
self
|
44
|
-
end
|
45
|
-
|
46
|
-
# Check if the browser accepts the specified languages.
|
47
|
-
#
|
48
|
-
# @param langs [String|Array] A list of languages to match against.
|
49
|
-
# @return [Query] The query itself.
|
50
|
-
def accepts(langs = [])
|
51
|
-
@result = accepts?(langs)
|
52
|
-
self
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|