browser 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +33 -22
- data/browser.gemspec +1 -1
- data/lib/browser.rb +14 -8
- data/lib/browser/version.rb +2 -2
- data/test/browser_test.rb +23 -0
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -1,52 +1,63 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
browser (0.1.
|
4
|
+
browser (0.1.6)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
-
actionpack (3.2.
|
10
|
-
activemodel (= 3.2.
|
11
|
-
activesupport (= 3.2.
|
9
|
+
actionpack (3.2.11)
|
10
|
+
activemodel (= 3.2.11)
|
11
|
+
activesupport (= 3.2.11)
|
12
12
|
builder (~> 3.0.0)
|
13
13
|
erubis (~> 2.7.0)
|
14
14
|
journey (~> 1.0.4)
|
15
15
|
rack (~> 1.4.0)
|
16
16
|
rack-cache (~> 1.2)
|
17
17
|
rack-test (~> 0.6.1)
|
18
|
-
sprockets (~> 2.1
|
19
|
-
activemodel (3.2.
|
20
|
-
activesupport (= 3.2.
|
18
|
+
sprockets (~> 2.2.1)
|
19
|
+
activemodel (3.2.11)
|
20
|
+
activesupport (= 3.2.11)
|
21
21
|
builder (~> 3.0.0)
|
22
|
-
activesupport (3.2.
|
22
|
+
activesupport (3.2.11)
|
23
23
|
i18n (~> 0.6)
|
24
24
|
multi_json (~> 1.0)
|
25
25
|
awesome_print (1.1.0)
|
26
|
-
builder (3.0.
|
27
|
-
coderay (1.0.
|
26
|
+
builder (3.0.4)
|
27
|
+
coderay (1.0.8)
|
28
28
|
erubis (2.7.0)
|
29
29
|
hike (1.2.1)
|
30
30
|
i18n (0.6.1)
|
31
31
|
journey (1.0.4)
|
32
|
-
json (1.7.
|
33
|
-
method_source (0.8)
|
34
|
-
multi_json (1.
|
35
|
-
pry (0.9.
|
32
|
+
json (1.7.6)
|
33
|
+
method_source (0.8.1)
|
34
|
+
multi_json (1.5.0)
|
35
|
+
pry (0.9.11.4)
|
36
36
|
coderay (~> 1.0.5)
|
37
37
|
method_source (~> 0.8)
|
38
|
-
slop (~> 3.
|
39
|
-
|
38
|
+
slop (~> 3.4)
|
39
|
+
pry-meta (0.0.5)
|
40
|
+
awesome_print
|
41
|
+
pry
|
42
|
+
pry-nav
|
43
|
+
pry-remote
|
44
|
+
pry-nav (0.2.3)
|
45
|
+
pry (~> 0.9.10)
|
46
|
+
pry-remote (0.1.6)
|
47
|
+
pry (~> 0.9)
|
48
|
+
slop (~> 3.0)
|
49
|
+
rack (1.4.5)
|
40
50
|
rack-cache (1.2)
|
41
51
|
rack (>= 0.4)
|
42
|
-
rack-test (0.6.
|
52
|
+
rack-test (0.6.2)
|
43
53
|
rack (>= 1.0)
|
44
|
-
rake (0.
|
45
|
-
rdoc (3.12)
|
54
|
+
rake (10.0.3)
|
55
|
+
rdoc (3.12.1)
|
46
56
|
json (~> 1.4)
|
47
|
-
slop (3.
|
48
|
-
sprockets (2.
|
57
|
+
slop (3.4.3)
|
58
|
+
sprockets (2.2.2)
|
49
59
|
hike (~> 1.2)
|
60
|
+
multi_json (~> 1.0)
|
50
61
|
rack (~> 1.0)
|
51
62
|
tilt (~> 1.1, != 1.3.0)
|
52
63
|
tilt (1.3.3)
|
@@ -58,6 +69,6 @@ DEPENDENCIES
|
|
58
69
|
actionpack
|
59
70
|
awesome_print
|
60
71
|
browser!
|
61
|
-
pry
|
72
|
+
pry-meta
|
62
73
|
rake
|
63
74
|
rdoc
|
data/browser.gemspec
CHANGED
@@ -20,6 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_development_dependency "actionpack"
|
21
21
|
s.add_development_dependency "rake"
|
22
22
|
s.add_development_dependency "rdoc"
|
23
|
-
s.add_development_dependency "pry"
|
23
|
+
s.add_development_dependency "pry-meta"
|
24
24
|
s.add_development_dependency "awesome_print"
|
25
25
|
end
|
data/lib/browser.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "set"
|
2
|
+
|
1
3
|
class Browser
|
2
4
|
# Add Rails helper if ActionController::Base is available
|
3
5
|
require "browser/action_controller" if defined?(ActionController::Base)
|
@@ -29,7 +31,7 @@ class Browser
|
|
29
31
|
}
|
30
32
|
|
31
33
|
VERSIONS = {
|
32
|
-
:default => /(?:Version|MSIE|Firefox|Chrome|QuickTime|BlackBerry[^\/]+|CoreMedia v)[\/ ]?([a-z0-9.]+)/i,
|
34
|
+
:default => /(?:Version|MSIE|Firefox|Chrome|CriOS|QuickTime|BlackBerry[^\/]+|CoreMedia v)[\/ ]?([a-z0-9.]+)/i,
|
33
35
|
:opera => /Opera\/.*? Version\/([\d.]+)/
|
34
36
|
}
|
35
37
|
|
@@ -270,7 +272,7 @@ class Browser
|
|
270
272
|
|
271
273
|
# Detect if browser is Safari.
|
272
274
|
def safari?
|
273
|
-
ua =~ /Safari/ && ua !~ /Chrome/
|
275
|
+
ua =~ /Safari/ && ua !~ /Chrome|CriOS/
|
274
276
|
end
|
275
277
|
|
276
278
|
# Detect if browser is Firefox.
|
@@ -280,7 +282,7 @@ class Browser
|
|
280
282
|
|
281
283
|
# Detect if browser is Chrome.
|
282
284
|
def chrome?
|
283
|
-
!!(ua =~ /Chrome/)
|
285
|
+
!!(ua =~ /Chrome|CriOS/)
|
284
286
|
end
|
285
287
|
|
286
288
|
# Detect if browser is Internet Explorer.
|
@@ -361,20 +363,24 @@ class Browser
|
|
361
363
|
|
362
364
|
# Return a meta info about this browser.
|
363
365
|
def meta
|
364
|
-
|
365
|
-
m << id
|
366
|
+
set = Set.new.tap do |m|
|
367
|
+
m << id.to_s
|
366
368
|
m << "webkit" if webkit?
|
367
369
|
m << "ios" if ios?
|
368
|
-
m
|
370
|
+
m.merge(%W[safari safari#{version}]) if safari?
|
369
371
|
m << "#{id}#{version}" unless safari? || chrome?
|
370
|
-
m << platform
|
372
|
+
m << platform.to_s
|
371
373
|
m << "capable" if capable?
|
372
374
|
m << "mobile" if mobile?
|
373
375
|
end
|
376
|
+
|
377
|
+
set.to_a
|
374
378
|
end
|
375
379
|
|
380
|
+
alias_method :to_a, :meta
|
381
|
+
|
376
382
|
# Return meta representation as string.
|
377
383
|
def to_s
|
378
|
-
meta.join(" ")
|
384
|
+
meta.to_a.join(" ")
|
379
385
|
end
|
380
386
|
end
|
data/lib/browser/version.rb
CHANGED
data/test/browser_test.rb
CHANGED
@@ -15,6 +15,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
15
15
|
OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
|
16
16
|
FIREFOX = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8"
|
17
17
|
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"
|
18
|
+
MOBILE_CHROME = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3"
|
18
19
|
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"
|
19
20
|
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"
|
20
21
|
BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
@@ -224,6 +225,18 @@ class BrowserTest < Test::Unit::TestCase
|
|
224
225
|
assert_equal "5", @browser.version
|
225
226
|
end
|
226
227
|
|
228
|
+
def test_detect_mobile_chrome
|
229
|
+
@browser.ua = MOBILE_CHROME
|
230
|
+
|
231
|
+
assert_equal "Chrome", @browser.name
|
232
|
+
assert @browser.chrome?
|
233
|
+
assert !@browser.safari?
|
234
|
+
assert @browser.webkit?
|
235
|
+
assert @browser.capable?
|
236
|
+
assert_equal "19.0.1084.60", @browser.full_version
|
237
|
+
assert_equal "19", @browser.version
|
238
|
+
end
|
239
|
+
|
227
240
|
def test_detect_android
|
228
241
|
@browser.ua = ANDROID
|
229
242
|
|
@@ -430,4 +443,14 @@ class BrowserTest < Test::Unit::TestCase
|
|
430
443
|
assert @browser.kindle?
|
431
444
|
assert @browser.webkit?
|
432
445
|
end
|
446
|
+
|
447
|
+
def test_remove_duplicate_items
|
448
|
+
@browser.ua = SAFARI
|
449
|
+
assert_equal ["safari"], @browser.meta.select {|item| item == "safari" }
|
450
|
+
end
|
451
|
+
|
452
|
+
def test_meta_aliased_as_to_a
|
453
|
+
@browser.ua = SAFARI
|
454
|
+
assert_equal @browser.meta, @browser.to_a
|
455
|
+
end
|
433
456
|
end
|
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.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
name: pry
|
63
|
+
name: pry-meta
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
131
|
rubyforge_project:
|
132
|
-
rubygems_version: 1.8.
|
132
|
+
rubygems_version: 1.8.25
|
133
133
|
signing_key:
|
134
134
|
specification_version: 3
|
135
135
|
summary: Do some browser detection with Ruby.
|