brauser 1.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.
- data/.gitignore +6 -0
- data/.travis.yml +8 -0
- data/.yardopts +1 -0
- data/Gemfile +9 -0
- data/README.md +27 -0
- data/Rakefile +18 -0
- data/brauser.gemspec +34 -0
- data/doc/Brauser.html +129 -0
- data/doc/Brauser/Browser.html +4392 -0
- data/doc/Brauser/Hooks.html +125 -0
- data/doc/Brauser/Hooks/RubyOnRails.html +332 -0
- data/doc/Brauser/Query.html +1315 -0
- data/doc/Brauser/Version.html +189 -0
- data/doc/_index.html +177 -0
- data/doc/class_list.html +53 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +328 -0
- data/doc/file.README.html +102 -0
- data/doc/file_list.html +55 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +102 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +412 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/brauser.rb +14 -0
- data/lib/brauser/browser.rb +794 -0
- data/lib/brauser/hooks.rb +31 -0
- data/lib/brauser/query.rb +118 -0
- data/lib/brauser/version.rb +24 -0
- data/spec/brauser/browser_spec.rb +685 -0
- data/spec/brauser/hooks_spec.rb +27 -0
- data/spec/brauser/query_spec.rb +123 -0
- data/spec/brauser_spec.rb +6 -0
- data/spec/coverage_helper.rb +20 -0
- data/spec/frameworks_helper.rb +24 -0
- data/spec/spec_helper.rb +18 -0
- metadata +226 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# This file is part of the brauser gem. Copyright (C) 2012 and above Shogun <shogun_panda@me.com>.
|
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::Hooks::RubyOnRails do
|
10
|
+
let(:controller){::ActionController::Base.new}
|
11
|
+
|
12
|
+
it "should append to ActionController::Base" do
|
13
|
+
expect(::ActionController::Base.new.respond_to?(:browser)).to be_true
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should memoize browser" do
|
17
|
+
browser = controller.browser
|
18
|
+
expect(browser).to be_a(Brauser::Browser)
|
19
|
+
expect(controller.browser).to eq(browser)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should redetect browser" do
|
23
|
+
browser = controller.browser
|
24
|
+
expect(controller.browser(true)).not_to eq(browser)
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# This file is part of the brauser gem. Copyright (C) 2012 and above Shogun <shogun_panda@me.com>.
|
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
|
+
class Brauser::Query
|
11
|
+
def true_query?
|
12
|
+
@result == true
|
13
|
+
end
|
14
|
+
|
15
|
+
def false_query?
|
16
|
+
@result == false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
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") }
|
21
|
+
let(:query) { Brauser::Query.new(browser, true) }
|
22
|
+
|
23
|
+
describe "#is" do
|
24
|
+
it "should call the final corresponding method and then return self" do
|
25
|
+
query.should_receive(:is?).and_return(true)
|
26
|
+
expect(query.is(:msie)).to be(query)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#is?" do
|
31
|
+
it "should call the browser's corresponding method and update the result" do
|
32
|
+
query.result = true
|
33
|
+
browser.should_receive(:is?).with(:msie, {}, []).and_return(false)
|
34
|
+
expect(query.is?(:msie)).to be_false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#v" do
|
39
|
+
it "should call the final corresponding method and then return self" do
|
40
|
+
query.should_receive(:v?).and_return(true)
|
41
|
+
expect(query.v(">= 9")).to be(query)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#v?" do
|
46
|
+
it "should call the browser's corresponding method and update the result" do
|
47
|
+
query.result = true
|
48
|
+
browser.should_receive(:v?).with(">= 9").and_return(false)
|
49
|
+
expect(query.v?(">= 9")).to be_false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#on" do
|
54
|
+
it "should call the final corresponding method and then return self" do
|
55
|
+
query.should_receive(:on?).and_return(true)
|
56
|
+
expect(query.on(:osx)).to be(query)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "#on?" do
|
61
|
+
it "should call the browser's corresponding method and update the result" do
|
62
|
+
query.result = true
|
63
|
+
browser.should_receive(:on?).with(:osx).and_return(false)
|
64
|
+
expect(query.on?(:osx)).to be_false
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#accepts" do
|
70
|
+
it "should call the final corresponding method and then return self" do
|
71
|
+
query.should_receive(:accepts?).and_return(true)
|
72
|
+
expect(query.accepts("it")).to be(query)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#accepts?" do
|
77
|
+
it "should call the browser's corresponding method and update the result" do
|
78
|
+
query.result = true
|
79
|
+
browser.should_receive(:accepts?).with("it").and_return(false)
|
80
|
+
expect(query.accepts?("it")).to be_false
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "concatenation" do
|
85
|
+
before(:each) do
|
86
|
+
browser.instance_variable_set("@name", :chrome)
|
87
|
+
browser.instance_variable_set("@version", "7.1.2")
|
88
|
+
browser.instance_variable_set("@name", :windows)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should call requested methods on the browser and return a query" do
|
92
|
+
browser.should_receive(:is).and_return(Brauser::Query.new(browser, true))
|
93
|
+
browser.should_receive(:v?).and_return(true)
|
94
|
+
browser.should_receive(:on?).and_return(true)
|
95
|
+
|
96
|
+
expect(browser.is(:chrome).v(">= 7").on(:osx)).to be_a(Brauser::Query)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should call methods while result is true" do
|
100
|
+
browser.should_receive(:is).and_return(Brauser::Query.new(browser, true))
|
101
|
+
browser.should_receive(:v?).and_return(false)
|
102
|
+
browser.should_not_receive(:on?)
|
103
|
+
|
104
|
+
expect(browser.is(:chrome).v(">= 7").on(:osx)).to be_a(Brauser::Query)
|
105
|
+
end
|
106
|
+
|
107
|
+
it "when the last method is the question mark, it should return the evaluation to boolean" do
|
108
|
+
browser.should_receive(:is).and_return(Brauser::Query.new(browser, true))
|
109
|
+
browser.should_receive(:v?).and_return(true)
|
110
|
+
browser.should_receive(:on?).and_return(true)
|
111
|
+
|
112
|
+
expect(browser.is(:chrome).v(">= 7").on?(:osx)).to be_true
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should return the result when ending the query with #result" do
|
116
|
+
browser.should_receive(:is).and_return(Brauser::Query.new(browser, true))
|
117
|
+
browser.should_receive(:v?).and_return(false)
|
118
|
+
browser.should_not_receive(:on?)
|
119
|
+
|
120
|
+
expect(browser.is(:chrome).v(">= 9").on(:osx).result).to be_false
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# This file is part of the brauser gem. Copyright (C) 2012 and above Shogun <shogun_panda@me.com>.
|
4
|
+
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
+
#
|
6
|
+
|
7
|
+
require "pathname"
|
8
|
+
|
9
|
+
if ENV["BRAUSER_COVERAGE"] == "TRUE" && RUBY_VERSION >= "1.9" then
|
10
|
+
require "simplecov"
|
11
|
+
|
12
|
+
root = Pathname.new(File.dirname(__FILE__)) + ".."
|
13
|
+
|
14
|
+
SimpleCov.start do
|
15
|
+
add_filter do |src_file|
|
16
|
+
path = Pathname.new(src_file.filename).relative_path_from(root).to_s
|
17
|
+
path !~ /^lib/
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# This file is part of the brauser gem. Copyright (C) 2012 and above Shogun <shogun_panda@me.com>.
|
4
|
+
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
+
#
|
6
|
+
|
7
|
+
require "ostruct"
|
8
|
+
|
9
|
+
if !defined?(Rails) then
|
10
|
+
module Rails
|
11
|
+
end
|
12
|
+
|
13
|
+
module ActionController
|
14
|
+
class Base
|
15
|
+
def request
|
16
|
+
OpenStruct.new(:headers => {})
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.helper_method(method)
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# This file is part of the brauser gem. Copyright (C) 2012 and above Shogun <shogun_panda@me.com>.
|
4
|
+
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
+
#
|
6
|
+
|
7
|
+
require "rubygems"
|
8
|
+
require "coverage_helper"
|
9
|
+
require "bundler/setup"
|
10
|
+
|
11
|
+
require "frameworks_helper"
|
12
|
+
require "brauser"
|
13
|
+
|
14
|
+
RSpec.configure do |config|
|
15
|
+
config.expect_with :rspec do |c|
|
16
|
+
c.syntax = :expect
|
17
|
+
end
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,226 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: brauser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Shogun
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-08-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: lazier
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.11.0
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.11.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.9.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: simplecov
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.6.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.6.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: pry
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: yard
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.8.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.8.0
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: redcarpet
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 2.1.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 2.1.0
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: github-markup
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 0.7.0
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 0.7.0
|
142
|
+
description: A framework agnostic browser detection and querying helper.
|
143
|
+
email:
|
144
|
+
- shogun_panda@me.com
|
145
|
+
executables: []
|
146
|
+
extensions: []
|
147
|
+
extra_rdoc_files: []
|
148
|
+
files:
|
149
|
+
- .gitignore
|
150
|
+
- .travis.yml
|
151
|
+
- .yardopts
|
152
|
+
- Gemfile
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- brauser.gemspec
|
156
|
+
- doc/Brauser.html
|
157
|
+
- doc/Brauser/Browser.html
|
158
|
+
- doc/Brauser/Hooks.html
|
159
|
+
- doc/Brauser/Hooks/RubyOnRails.html
|
160
|
+
- doc/Brauser/Query.html
|
161
|
+
- doc/Brauser/Version.html
|
162
|
+
- doc/_index.html
|
163
|
+
- doc/class_list.html
|
164
|
+
- doc/css/common.css
|
165
|
+
- doc/css/full_list.css
|
166
|
+
- doc/css/style.css
|
167
|
+
- doc/file.README.html
|
168
|
+
- doc/file_list.html
|
169
|
+
- doc/frames.html
|
170
|
+
- doc/index.html
|
171
|
+
- doc/js/app.js
|
172
|
+
- doc/js/full_list.js
|
173
|
+
- doc/js/jquery.js
|
174
|
+
- doc/method_list.html
|
175
|
+
- doc/top-level-namespace.html
|
176
|
+
- lib/brauser.rb
|
177
|
+
- lib/brauser/browser.rb
|
178
|
+
- lib/brauser/hooks.rb
|
179
|
+
- lib/brauser/query.rb
|
180
|
+
- lib/brauser/version.rb
|
181
|
+
- spec/brauser/browser_spec.rb
|
182
|
+
- spec/brauser/hooks_spec.rb
|
183
|
+
- spec/brauser/query_spec.rb
|
184
|
+
- spec/brauser_spec.rb
|
185
|
+
- spec/coverage_helper.rb
|
186
|
+
- spec/frameworks_helper.rb
|
187
|
+
- spec/spec_helper.rb
|
188
|
+
homepage: http://github.com/ShogunPanda/brauser
|
189
|
+
licenses: []
|
190
|
+
post_install_message:
|
191
|
+
rdoc_options: []
|
192
|
+
require_paths:
|
193
|
+
- lib
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ! '>='
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
segments:
|
201
|
+
- 0
|
202
|
+
hash: -2118060145833546010
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
205
|
+
requirements:
|
206
|
+
- - ! '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
segments:
|
210
|
+
- 0
|
211
|
+
hash: -2118060145833546010
|
212
|
+
requirements: []
|
213
|
+
rubyforge_project: brauser
|
214
|
+
rubygems_version: 1.8.24
|
215
|
+
signing_key:
|
216
|
+
specification_version: 3
|
217
|
+
summary: A framework agnostic browser detection and querying helper.
|
218
|
+
test_files:
|
219
|
+
- spec/brauser/browser_spec.rb
|
220
|
+
- spec/brauser/hooks_spec.rb
|
221
|
+
- spec/brauser/query_spec.rb
|
222
|
+
- spec/brauser_spec.rb
|
223
|
+
- spec/coverage_helper.rb
|
224
|
+
- spec/frameworks_helper.rb
|
225
|
+
- spec/spec_helper.rb
|
226
|
+
has_rdoc:
|