brauser 3.3.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,60 +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 make queries.
|
11
|
-
module Queries
|
12
|
-
# Checks if the browser is a specific name and optionally of a specific version and platform.
|
13
|
-
#
|
14
|
-
# This version returns a boolean and it is equal to append a call to `#result` to the method `#is`.
|
15
|
-
#
|
16
|
-
# @see #v?
|
17
|
-
# @see #on?
|
18
|
-
#
|
19
|
-
# @param names [Symbol|Array] A list of specific names to match. Also, this meta-names are supported: `:capable` and `:tablet`.
|
20
|
-
# @param versions [Hash] An hash with specific version to match against. Need to be in any form that `#v` understands.
|
21
|
-
# @param platforms [Symbol|Array] A list of specific platform to match. Valid values are all those possible for the platform attribute.
|
22
|
-
# @return [Boolean] `true` if current browser matches, `false` otherwise.
|
23
|
-
def is?(names = [], versions = {}, platforms = [])
|
24
|
-
@result ? @target.is?(names, versions, platforms) : @result
|
25
|
-
end
|
26
|
-
|
27
|
-
# Checks if the browser is a specific version.
|
28
|
-
#
|
29
|
-
# This version returns a boolean and it is equal to append a call to `#result` to the method `#v`.
|
30
|
-
#
|
31
|
-
# @param versions [String|Hash] A string in the form `operator version && ...` (example: `>= 7 && < 4`) or an hash with specific version to match against,
|
32
|
-
# in form `{:operator => version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
|
33
|
-
# @return [Boolean] `true` if current browser matches, `false` otherwise.
|
34
|
-
def version?(versions = {})
|
35
|
-
@result ? @target.version?(versions) : @result
|
36
|
-
end
|
37
|
-
alias_method :v?, :version?
|
38
|
-
|
39
|
-
# Check if the browser is on a specific platform.
|
40
|
-
#
|
41
|
-
# This version returns a boolean and it is equal to append a call to `#result` to the method `#on.
|
42
|
-
#
|
43
|
-
# @param platforms [Symbol|Array] A list of specific platform to match.
|
44
|
-
# @return [Boolean] `true` if current browser matches, `false` otherwise.
|
45
|
-
def on?(platforms = [])
|
46
|
-
@result ? @target.on?(platforms) : @result
|
47
|
-
end
|
48
|
-
|
49
|
-
# Check if the browser accepts the specified languages.
|
50
|
-
#
|
51
|
-
# This version returns a boolean and it is equal to append a call to `#result` to the method `#accepts.
|
52
|
-
#
|
53
|
-
# @param langs [String|Array] A list of languages to match against.
|
54
|
-
# @return [Boolean] `true` if current browser matches, `false` otherwise.
|
55
|
-
def accepts?(langs = [])
|
56
|
-
@result ? @target.accepts?(langs) : @result
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,39 +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
|
-
require "spec_helper"
|
8
|
-
|
9
|
-
describe Brauser::Definition do
|
10
|
-
let(:definition) { ::Brauser::Definition.new(:tag, "Label", "ABC", /(abc)+/) }
|
11
|
-
|
12
|
-
describe "#initialize" do
|
13
|
-
it "should assign attributes" do
|
14
|
-
other = ::Brauser::Definition.new("A", "B", "C", "D")
|
15
|
-
expect(other.tag).to eq("A")
|
16
|
-
expect(other.label).to eq("B")
|
17
|
-
expect(other.primary).to eq("C")
|
18
|
-
expect(other.secondary).to eq("D")
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "#match" do
|
23
|
-
it "should apply the correct matcher and return the correct value" do
|
24
|
-
expect(definition.match(:primary, nil, "ABC")).to eq("ABC")
|
25
|
-
expect(definition.match(:primary, nil, "CDE")).to be_nil
|
26
|
-
expect(definition.match(:secondary, nil, "abcabc")).to be_a(MatchData)
|
27
|
-
expect(definition.match(:secondary, nil, "abx")).to be_nil
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should support a block matcher" do
|
31
|
-
definition.primary = Proc.new { |definition, a, b, c| a + b + c }
|
32
|
-
expect(definition.match(:primary, nil, 1, 2, 3)).to eq(6)
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should return nil when the matcher is not valid" do
|
36
|
-
expect(definition.match(:tertiary)).to be_nil
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/spec/brauser/query_spec.rb
DELETED
@@ -1,111 +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
|
-
require "spec_helper"
|
8
|
-
|
9
|
-
describe Brauser::Query do
|
10
|
-
let(:browser){ ::Brauser::Browser.new("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.82 Safari/537.1", "it;q=0.7, en;q=0.3") }
|
11
|
-
let(:query) { ::Brauser::Query.new(browser, true) }
|
12
|
-
|
13
|
-
describe "#is" do
|
14
|
-
it "should call the final corresponding method and then return self" do
|
15
|
-
expect(query).to receive(:is?).and_call_original
|
16
|
-
expect(query.is(:msie)).to be(query)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "#is?" do
|
21
|
-
it "should call the browser's corresponding method and update the result" do
|
22
|
-
expect(browser).to receive(:is?).with(:msie, {}, []).and_call_original
|
23
|
-
expect(query.is?(:msie)).to be_false
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#version" do
|
28
|
-
it "should call the final corresponding method and then return self" do
|
29
|
-
expect(query).to receive(:version?).and_call_original
|
30
|
-
expect(query.version(">= 9")).to be(query)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#version?" do
|
35
|
-
it "should call the browser's corresponding method and update the result" do
|
36
|
-
expect(browser).to receive(:version?).with(">= 9").and_call_original
|
37
|
-
expect(browser).to receive(:version?).with(">= 10").and_call_original
|
38
|
-
expect(query.version?(">= 9")).to be_true
|
39
|
-
expect(query.v?(">= 10")).to be_true
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "#on" do
|
44
|
-
it "should call the final corresponding method and then return self" do
|
45
|
-
expect(query).to receive(:on?).and_call_original
|
46
|
-
expect(query.on(:osx)).to be(query)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "#on?" do
|
51
|
-
it "should call the browser's corresponding method and update the result" do
|
52
|
-
expect(browser).to receive(:on?).with(:osx).and_call_original
|
53
|
-
expect(query.on?(:osx)).to be_true
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
describe "#accepts" do
|
59
|
-
it "should call the final corresponding method and then return self" do
|
60
|
-
expect(query).to receive(:accepts?).and_call_original
|
61
|
-
expect(query.accepts("it")).to be(query)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "#accepts?" do
|
66
|
-
it "should call the browser's corresponding method and update the result" do
|
67
|
-
expect(browser).to receive(:accepts?).with("es").and_call_original
|
68
|
-
expect(query.accepts?("es")).to be_false
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe "concatenation" do
|
73
|
-
before(:each) do
|
74
|
-
browser.name = :chrome
|
75
|
-
browser.version = "7.1.2"
|
76
|
-
browser.platform = :windows
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should call requested methods on the browser and return a query" do
|
80
|
-
expect(browser).to receive(:is).and_call_original
|
81
|
-
expect(browser).to receive(:version?).and_call_original
|
82
|
-
expect(browser).to receive(:on?).and_call_original
|
83
|
-
|
84
|
-
expect(browser.is(:chrome).version(">= 7").on(:osx)).to be_a(::Brauser::Query)
|
85
|
-
end
|
86
|
-
|
87
|
-
it "should call methods while result is true" do
|
88
|
-
expect(browser).to receive(:is).and_call_original
|
89
|
-
expect(browser).to receive(:version?).and_call_original
|
90
|
-
expect(browser).not_to receive(:on?)
|
91
|
-
|
92
|
-
expect(browser.is(:chrome).version(">= 9").on(:osx)).to be_a(::Brauser::Query)
|
93
|
-
end
|
94
|
-
|
95
|
-
it "when the last method is the question mark, it should return the evaluation to boolean" do
|
96
|
-
expect(browser).to receive(:is).and_call_original
|
97
|
-
expect(browser).to receive(:version?).and_call_original
|
98
|
-
expect(browser).to receive(:on?).and_call_original
|
99
|
-
|
100
|
-
expect(browser.is(:chrome).version(">= 7").on?(:osx)).to be_false
|
101
|
-
end
|
102
|
-
|
103
|
-
it "should return the result when ending the query with #result" do
|
104
|
-
expect(browser).to receive(:is).and_call_original
|
105
|
-
expect(browser).to receive(:version?).and_call_original
|
106
|
-
expect(browser).not_to receive(:on?)
|
107
|
-
|
108
|
-
expect(browser.is(:chrome).v(">= 9").on(:osx).result).to be_false
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|