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 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.