browser 0.1.3 → 0.1.4
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/Gemfile +1 -1
- data/Gemfile.lock +38 -28
- data/README.rdoc +1 -0
- data/Rakefile +6 -5
- data/browser.gemspec +1 -0
- data/lib/browser.rb +12 -10
- data/lib/browser/version.rb +1 -1
- data/test/browser_test.rb +37 -9
- metadata +35 -9
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
source
|
1
|
+
source :rubygems
|
2
2
|
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,38 +1,47 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
browser (0.1.
|
4
|
+
browser (0.1.4)
|
5
5
|
|
6
6
|
GEM
|
7
|
-
remote: http://
|
7
|
+
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
rack (~> 1.2
|
17
|
-
rack-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
i18n (~> 0.
|
24
|
-
|
25
|
-
builder (
|
26
|
-
erubis (2.
|
27
|
-
|
28
|
-
i18n (0.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
rack
|
9
|
+
actionpack (3.2.3)
|
10
|
+
activemodel (= 3.2.3)
|
11
|
+
activesupport (= 3.2.3)
|
12
|
+
builder (~> 3.0.0)
|
13
|
+
erubis (~> 2.7.0)
|
14
|
+
journey (~> 1.0.1)
|
15
|
+
rack (~> 1.4.0)
|
16
|
+
rack-cache (~> 1.2)
|
17
|
+
rack-test (~> 0.6.1)
|
18
|
+
sprockets (~> 2.1.2)
|
19
|
+
activemodel (3.2.3)
|
20
|
+
activesupport (= 3.2.3)
|
21
|
+
builder (~> 3.0.0)
|
22
|
+
activesupport (3.2.3)
|
23
|
+
i18n (~> 0.6)
|
24
|
+
multi_json (~> 1.0)
|
25
|
+
builder (3.0.0)
|
26
|
+
erubis (2.7.0)
|
27
|
+
hike (1.2.1)
|
28
|
+
i18n (0.6.0)
|
29
|
+
journey (1.0.3)
|
30
|
+
json (1.7.3)
|
31
|
+
multi_json (1.3.6)
|
32
|
+
rack (1.4.1)
|
33
|
+
rack-cache (1.2)
|
34
|
+
rack (>= 0.4)
|
35
|
+
rack-test (0.6.1)
|
33
36
|
rack (>= 1.0)
|
34
|
-
rake (0.9.2)
|
35
|
-
|
37
|
+
rake (0.9.2.2)
|
38
|
+
rdoc (3.12)
|
39
|
+
json (~> 1.4)
|
40
|
+
sprockets (2.1.3)
|
41
|
+
hike (~> 1.2)
|
42
|
+
rack (~> 1.0)
|
43
|
+
tilt (~> 1.1, != 1.3.0)
|
44
|
+
tilt (1.3.3)
|
36
45
|
|
37
46
|
PLATFORMS
|
38
47
|
ruby
|
@@ -41,3 +50,4 @@ DEPENDENCIES
|
|
41
50
|
actionpack (~> 3.0)
|
42
51
|
browser!
|
43
52
|
rake (~> 0.9)
|
53
|
+
rdoc (~> 3.12)
|
data/README.rdoc
CHANGED
data/Rakefile
CHANGED
@@ -12,12 +12,13 @@ Rake::TestTask.new do |t|
|
|
12
12
|
t.ruby_opts = %w[-rubygems]
|
13
13
|
end
|
14
14
|
|
15
|
-
require
|
16
|
-
|
15
|
+
require 'rdoc/task'
|
16
|
+
RDoc::Task.new do |rdoc|
|
17
17
|
rdoc.main = "README.rdoc"
|
18
18
|
rdoc.rdoc_dir = "doc"
|
19
19
|
rdoc.title = "Browser API"
|
20
|
-
rdoc.options += %w[ --line-numbers --
|
21
|
-
rdoc.rdoc_files.include("README.rdoc")
|
22
|
-
rdoc.rdoc_files.include("lib/**/*.rb")
|
20
|
+
rdoc.options += %w[ --line-numbers --charset utf-8 ]
|
21
|
+
rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
23
22
|
end
|
23
|
+
|
24
|
+
task :default => :test
|
data/browser.gemspec
CHANGED
data/lib/browser.rb
CHANGED
@@ -28,9 +28,12 @@ class Browser
|
|
28
28
|
:core_media => "Apple CoreMedia"
|
29
29
|
}
|
30
30
|
|
31
|
-
|
31
|
+
VERSIONS = {
|
32
|
+
:default => /(?:Version|MSIE|Firefox|Chrome|QuickTime|BlackBerry[^\/]+|CoreMedia v)[\/ ]?([a-z0-9.]+)/i,
|
33
|
+
:opera => /Opera\/.*? Version\/([\d.]+)/
|
34
|
+
}
|
32
35
|
|
33
|
-
|
36
|
+
TRIDENT_VERSION_REGEX = /Trident\/([0-9.]+)/
|
34
37
|
|
35
38
|
LANGUAGES = {
|
36
39
|
"af" => "Afrikaans",
|
@@ -202,13 +205,7 @@ class Browser
|
|
202
205
|
|
203
206
|
# Return the full version.
|
204
207
|
def full_version
|
205
|
-
|
206
|
-
_, v = *ua.match(COMPATIBILITY_VIEW_REGEXP)
|
207
|
-
v.gsub!(/^([0-9])/) { $1.to_i + 4 }
|
208
|
-
else
|
209
|
-
_, v = *ua.match(VERSION_REGEX)
|
210
|
-
end
|
211
|
-
|
208
|
+
_, v = *ua.match(VERSIONS.fetch(id, VERSIONS[:default]))
|
212
209
|
v || "0.0"
|
213
210
|
end
|
214
211
|
|
@@ -218,7 +215,7 @@ class Browser
|
|
218
215
|
end
|
219
216
|
|
220
217
|
def compatibility_view?
|
221
|
-
ie? && ua.match(
|
218
|
+
ie? && ua.match(TRIDENT_VERSION_REGEX) && version.to_i < ($1.to_i + 4)
|
222
219
|
end
|
223
220
|
|
224
221
|
# Detect if browser is WebKit-based.
|
@@ -336,6 +333,11 @@ class Browser
|
|
336
333
|
!!(ua =~ /Linux/)
|
337
334
|
end
|
338
335
|
|
336
|
+
# Detect if browser is tablet (currently just iPad or Android).
|
337
|
+
def tablet?
|
338
|
+
ipad? || (android? && !mobile?)
|
339
|
+
end
|
340
|
+
|
339
341
|
# Return the platform.
|
340
342
|
def platform
|
341
343
|
case
|
data/lib/browser/version.rb
CHANGED
data/test/browser_test.rb
CHANGED
@@ -11,10 +11,11 @@ class BrowserTest < Test::Unit::TestCase
|
|
11
11
|
IE8_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; Media Center PC 5.0; .NET CLR 3.5.21022)"
|
12
12
|
IE9 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
|
13
13
|
IE9_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)"
|
14
|
-
OPERA = "Opera/9.
|
14
|
+
OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
|
15
15
|
FIREFOX = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8"
|
16
16
|
CHROME = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4"
|
17
17
|
ANDROID = "Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"
|
18
|
+
TABLOID = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
|
18
19
|
BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
19
20
|
PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
|
20
21
|
QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
|
@@ -66,6 +67,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
66
67
|
assert @browser.mobile?
|
67
68
|
assert @browser.capable?
|
68
69
|
assert @browser.ios?
|
70
|
+
assert @browser.tablet? == false
|
69
71
|
assert_equal "3.0", @browser.full_version
|
70
72
|
assert_equal "3", @browser.version
|
71
73
|
end
|
@@ -91,6 +93,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
91
93
|
assert @browser.mobile?
|
92
94
|
assert @browser.capable?
|
93
95
|
assert @browser.ios?
|
96
|
+
assert @browser.tablet? == false
|
94
97
|
assert_equal "3.0", @browser.full_version
|
95
98
|
assert_equal "3", @browser.version
|
96
99
|
end
|
@@ -104,6 +107,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
104
107
|
assert @browser.webkit?
|
105
108
|
assert @browser.capable?
|
106
109
|
assert @browser.ios?
|
110
|
+
assert @browser.tablet?
|
107
111
|
assert_equal "4.0.4", @browser.full_version
|
108
112
|
assert_equal "4", @browser.version
|
109
113
|
end
|
@@ -137,6 +141,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
137
141
|
assert @browser.ie?
|
138
142
|
assert @browser.ie8?
|
139
143
|
assert @browser.capable?
|
144
|
+
assert @browser.compatibility_view? == false
|
140
145
|
assert_equal "8.0", @browser.full_version
|
141
146
|
assert_equal "8", @browser.version
|
142
147
|
end
|
@@ -146,11 +151,12 @@ class BrowserTest < Test::Unit::TestCase
|
|
146
151
|
|
147
152
|
assert_equal "Internet Explorer", @browser.name
|
148
153
|
assert @browser.ie?
|
149
|
-
assert @browser.
|
154
|
+
assert @browser.ie7?
|
155
|
+
assert !@browser.ie8?
|
150
156
|
assert @browser.capable?
|
151
157
|
assert @browser.compatibility_view?
|
152
|
-
assert_equal "
|
153
|
-
assert_equal "
|
158
|
+
assert_equal "7.0", @browser.full_version
|
159
|
+
assert_equal "7", @browser.version
|
154
160
|
end
|
155
161
|
|
156
162
|
def test_detect_ie9
|
@@ -160,6 +166,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
160
166
|
assert @browser.ie?
|
161
167
|
assert @browser.ie9?
|
162
168
|
assert @browser.capable?
|
169
|
+
assert !@browser.compatibility_view?
|
163
170
|
assert_equal "9.0", @browser.full_version
|
164
171
|
assert_equal "9", @browser.version
|
165
172
|
end
|
@@ -169,11 +176,12 @@ class BrowserTest < Test::Unit::TestCase
|
|
169
176
|
|
170
177
|
assert_equal "Internet Explorer", @browser.name
|
171
178
|
assert @browser.ie?
|
172
|
-
assert @browser.
|
179
|
+
assert @browser.ie7?
|
180
|
+
assert !@browser.ie9?
|
173
181
|
assert @browser.capable?
|
174
182
|
assert @browser.compatibility_view?
|
175
|
-
assert_equal "
|
176
|
-
assert_equal "
|
183
|
+
assert_equal "7.0", @browser.full_version
|
184
|
+
assert_equal "7", @browser.version
|
177
185
|
end
|
178
186
|
|
179
187
|
def test_detect_opera
|
@@ -182,8 +190,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
182
190
|
assert_equal "Opera", @browser.name
|
183
191
|
assert @browser.opera?
|
184
192
|
assert @browser.capable?
|
185
|
-
assert_equal "
|
186
|
-
assert_equal "
|
193
|
+
assert_equal "11.64", @browser.full_version
|
194
|
+
assert_equal "11", @browser.version
|
187
195
|
end
|
188
196
|
|
189
197
|
def test_detect_firefox
|
@@ -216,16 +224,32 @@ class BrowserTest < Test::Unit::TestCase
|
|
216
224
|
assert @browser.safari?
|
217
225
|
assert @browser.webkit?
|
218
226
|
assert @browser.mobile?
|
227
|
+
assert @browser.tablet? == false
|
219
228
|
assert @browser.capable?
|
220
229
|
assert_equal "3.1.2", @browser.full_version
|
221
230
|
assert_equal "3", @browser.version
|
222
231
|
end
|
223
232
|
|
233
|
+
def test_detect_android_tablet
|
234
|
+
@browser.ua = TABLOID
|
235
|
+
|
236
|
+
assert_equal "Android", @browser.name
|
237
|
+
assert @browser.android?
|
238
|
+
assert @browser.safari?
|
239
|
+
assert @browser.webkit?
|
240
|
+
assert @browser.mobile? == false
|
241
|
+
assert @browser.tablet?
|
242
|
+
assert @browser.capable?
|
243
|
+
assert_equal "4.0", @browser.full_version
|
244
|
+
assert_equal "4", @browser.version
|
245
|
+
end
|
246
|
+
|
224
247
|
def test_detect_blackberry
|
225
248
|
@browser.ua = BLACKBERRY
|
226
249
|
|
227
250
|
assert_equal "BlackBerry", @browser.name
|
228
251
|
assert @browser.blackberry?
|
252
|
+
assert @browser.tablet? == false
|
229
253
|
assert @browser.mobile?
|
230
254
|
assert @browser.capable? == false
|
231
255
|
assert_equal "4.1.0", @browser.full_version
|
@@ -261,12 +285,16 @@ class BrowserTest < Test::Unit::TestCase
|
|
261
285
|
def test_detect_other_mobiles
|
262
286
|
@browser.ua = "Symbian OS"
|
263
287
|
assert @browser.mobile?
|
288
|
+
assert @browser.tablet? == false
|
264
289
|
|
265
290
|
@browser.ua = "MIDP-2.0"
|
266
291
|
assert @browser.mobile?
|
292
|
+
assert @browser.tablet? == false
|
267
293
|
|
268
294
|
@browser.ua = "Windows CE"
|
269
295
|
assert @browser.mobile?
|
296
|
+
assert @browser.tablet? == false
|
297
|
+
|
270
298
|
end
|
271
299
|
|
272
300
|
def test_return_a_zero_version
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-06-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rake
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,7 +37,28 @@ dependencies:
|
|
32
37
|
version: '0.9'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.9'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rdoc
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.12'
|
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: '3.12'
|
36
62
|
description: Do some browser detection with Ruby.
|
37
63
|
email:
|
38
64
|
- fnando.vieira@gmail.com
|
@@ -65,7 +91,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
91
|
version: '0'
|
66
92
|
segments:
|
67
93
|
- 0
|
68
|
-
hash:
|
94
|
+
hash: 701530694838661058
|
69
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
96
|
none: false
|
71
97
|
requirements:
|
@@ -74,10 +100,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
100
|
version: '0'
|
75
101
|
segments:
|
76
102
|
- 0
|
77
|
-
hash:
|
103
|
+
hash: 701530694838661058
|
78
104
|
requirements: []
|
79
105
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.8.
|
106
|
+
rubygems_version: 1.8.23
|
81
107
|
signing_key:
|
82
108
|
specification_version: 3
|
83
109
|
summary: Do some browser detection with Ruby.
|