browser 0.1.5 → 0.1.6
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.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.
|