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 CHANGED
@@ -1,52 +1,63 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- browser (0.1.5)
4
+ browser (0.1.6)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- actionpack (3.2.8)
10
- activemodel (= 3.2.8)
11
- activesupport (= 3.2.8)
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.3)
19
- activemodel (3.2.8)
20
- activesupport (= 3.2.8)
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.8)
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.3)
27
- coderay (1.0.7)
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.5)
33
- method_source (0.8)
34
- multi_json (1.3.6)
35
- pry (0.9.10)
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.3.1)
39
- rack (1.4.1)
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.1)
52
+ rack-test (0.6.2)
43
53
  rack (>= 1.0)
44
- rake (0.9.2.2)
45
- rdoc (3.12)
54
+ rake (10.0.3)
55
+ rdoc (3.12.1)
46
56
  json (~> 1.4)
47
- slop (3.3.3)
48
- sprockets (2.1.3)
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
- Array.new.tap do |m|
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 << "safari safari#{version}" if safari?
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
@@ -2,7 +2,7 @@ class Browser
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 5
5
+ PATCH = 6
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
- end
8
+ end
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.5
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: 2012-09-13 00:00:00.000000000 Z
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.23
132
+ rubygems_version: 1.8.25
133
133
  signing_key:
134
134
  specification_version: 3
135
135
  summary: Do some browser detection with Ruby.