browser 0.1.4 → 0.1.5

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.
@@ -1,34 +1,41 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- browser (0.1.4)
4
+ browser (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- actionpack (3.2.3)
10
- activemodel (= 3.2.3)
11
- activesupport (= 3.2.3)
9
+ actionpack (3.2.8)
10
+ activemodel (= 3.2.8)
11
+ activesupport (= 3.2.8)
12
12
  builder (~> 3.0.0)
13
13
  erubis (~> 2.7.0)
14
- journey (~> 1.0.1)
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.2)
19
- activemodel (3.2.3)
20
- activesupport (= 3.2.3)
18
+ sprockets (~> 2.1.3)
19
+ activemodel (3.2.8)
20
+ activesupport (= 3.2.8)
21
21
  builder (~> 3.0.0)
22
- activesupport (3.2.3)
22
+ activesupport (3.2.8)
23
23
  i18n (~> 0.6)
24
24
  multi_json (~> 1.0)
25
- builder (3.0.0)
25
+ awesome_print (1.1.0)
26
+ builder (3.0.3)
27
+ coderay (1.0.7)
26
28
  erubis (2.7.0)
27
29
  hike (1.2.1)
28
- i18n (0.6.0)
29
- journey (1.0.3)
30
- json (1.7.3)
30
+ i18n (0.6.1)
31
+ journey (1.0.4)
32
+ json (1.7.5)
33
+ method_source (0.8)
31
34
  multi_json (1.3.6)
35
+ pry (0.9.10)
36
+ coderay (~> 1.0.5)
37
+ method_source (~> 0.8)
38
+ slop (~> 3.3.1)
32
39
  rack (1.4.1)
33
40
  rack-cache (1.2)
34
41
  rack (>= 0.4)
@@ -37,6 +44,7 @@ GEM
37
44
  rake (0.9.2.2)
38
45
  rdoc (3.12)
39
46
  json (~> 1.4)
47
+ slop (3.3.3)
40
48
  sprockets (2.1.3)
41
49
  hike (~> 1.2)
42
50
  rack (~> 1.0)
@@ -47,7 +55,9 @@ PLATFORMS
47
55
  ruby
48
56
 
49
57
  DEPENDENCIES
50
- actionpack (~> 3.0)
58
+ actionpack
59
+ awesome_print
51
60
  browser!
52
- rake (~> 0.9)
53
- rdoc (~> 3.12)
61
+ pry
62
+ rake
63
+ rdoc
@@ -12,6 +12,7 @@ Do some browser detection with Ruby. Includes ActionController integration.
12
12
  require "browser"
13
13
 
14
14
  browser = Browser.new(:ua => "some string", :accept_language => "en-us")
15
+ browser.name # readable browser name
15
16
  browser.safari?
16
17
  browser.opera?
17
18
  browser.chrome?
@@ -39,7 +40,7 @@ Just add it to the Gemfile or `environment.rb`, depending of your Rails version.
39
40
  This adds a helper method called `browser`, that inspects your current user agent.
40
41
 
41
42
  <% if browser.ie6? %>
42
- <p class="disclaimer">Your're running an older IE version. Please update it!</p>
43
+ <p class="disclaimer">You're running an older IE version. Please update it!</p>
43
44
  <% end %>
44
45
 
45
46
  == Maintainer
@@ -17,7 +17,9 @@ Gem::Specification.new do |s|
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
 
20
- s.add_development_dependency "actionpack" , "~> 3.0"
21
- s.add_development_dependency "rake" , "~> 0.9"
22
- s.add_development_dependency "rdoc" , "~> 3.12"
20
+ s.add_development_dependency "actionpack"
21
+ s.add_development_dependency "rake"
22
+ s.add_development_dependency "rdoc"
23
+ s.add_development_dependency "pry"
24
+ s.add_development_dependency "awesome_print"
23
25
  end
@@ -230,7 +230,7 @@ class Browser
230
230
 
231
231
  # Detect if browser is mobile.
232
232
  def mobile?
233
- !!(ua =~ /(Mobile|Symbian|MIDP|Windows CE)/) || blackberry? || psp?
233
+ !!(ua =~ /(Mobi(le)?|Symbian|MIDP|Windows CE)/) || blackberry? || psp? || opera_mini?
234
234
  end
235
235
 
236
236
  # Detect if browser is QuickTime
@@ -245,7 +245,7 @@ class Browser
245
245
 
246
246
  # Detect if browser is Android.
247
247
  def android?
248
- !!(ua =~ /Android/)
248
+ !!(ua =~ /Android/ && !opera?)
249
249
  end
250
250
 
251
251
  # Detect if browser is Apple CoreMedia.
@@ -318,6 +318,11 @@ class Browser
318
318
  !!(ua =~ /Opera/)
319
319
  end
320
320
 
321
+ # Detect if browser is Opera Mini.
322
+ def opera_mini?
323
+ !!(ua =~ /Opera Mini/)
324
+ end
325
+
321
326
  # Detect if current platform is Macintosh.
322
327
  def mac?
323
328
  !!(ua =~ /Mac OS X/)
@@ -335,7 +340,12 @@ class Browser
335
340
 
336
341
  # Detect if browser is tablet (currently just iPad or Android).
337
342
  def tablet?
338
- ipad? || (android? && !mobile?)
343
+ !!(ipad? || (android? && !mobile?))
344
+ end
345
+
346
+ # Detect if browser is Kindle.
347
+ def kindle?
348
+ !!(ua =~ /Kindle/)
339
349
  end
340
350
 
341
351
  # Return the platform.
@@ -2,7 +2,7 @@ class Browser
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 4
5
+ PATCH = 5
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
@@ -1,25 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  require "test_helper"
2
3
 
3
4
  class BrowserTest < Test::Unit::TestCase
4
- IPHONE = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/1A542a Safari/419.3"
5
- IPOD = "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3"
6
- IPAD = "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"
7
- SAFARI = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8"
8
- IE6 = "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
9
- IE7 = "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
10
- IE8 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"
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
- IE9 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
13
- IE9_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)"
14
- OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
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
- 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
- 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"
19
- BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
20
- PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
21
- QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
22
- COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
5
+ IPHONE = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/1A542a Safari/419.3"
6
+ IPOD = "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3"
7
+ IPAD = "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"
8
+ SAFARI = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8"
9
+ IE6 = "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
10
+ IE7 = "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
11
+ IE8 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"
12
+ 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)"
13
+ IE9 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
14
+ IE9_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)"
15
+ OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
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
+ 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
+ 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
+ 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
+ BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
21
+ PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
22
+ QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
23
+ COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
24
+ XOOM = "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"
25
+ NEXUS_TABLET = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"
26
+ OPERA_MINI = "Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10"
27
+ OPERA_MOBI = "Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00"
28
+ WINDOWS_PHONE = "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)"
29
+ KINDLE = "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate)"
30
+ KINDLE_FIRE = "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
23
31
 
24
32
  def setup
25
33
  @browser = Browser.new
@@ -367,4 +375,59 @@ class BrowserTest < Test::Unit::TestCase
367
375
  methods = ActionController::Base.private_instance_methods.collect {|m| m.to_sym}
368
376
  assert methods.include?(:browser)
369
377
  end
378
+
379
+ def test_xoom
380
+ @browser.ua = XOOM
381
+
382
+ assert @browser.android?
383
+ assert @browser.tablet?
384
+ assert !@browser.mobile?
385
+ end
386
+
387
+ def test_nexus_tablet
388
+ @browser.ua = NEXUS_TABLET
389
+
390
+ assert @browser.android?
391
+ assert @browser.tablet?
392
+ assert !@browser.mobile?
393
+ end
394
+
395
+ def test_opera_mini
396
+ @browser.ua = OPERA_MINI
397
+
398
+ assert @browser.opera_mini?
399
+ assert !@browser.tablet?
400
+ assert @browser.mobile?
401
+ end
402
+
403
+ def test_opera_mobi
404
+ @browser.ua = OPERA_MOBI
405
+
406
+ assert @browser.opera?
407
+ assert !@browser.tablet?
408
+ assert @browser.mobile?
409
+ end
410
+
411
+ def test_windows_phone
412
+ @browser.ua = WINDOWS_PHONE
413
+
414
+ assert @browser.ie?
415
+ assert_equal "7", @browser.version
416
+ assert @browser.mobile?
417
+ assert !@browser.tablet?
418
+ end
419
+
420
+ def test_kindle_monochrome
421
+ @browser.ua = KINDLE
422
+
423
+ assert @browser.kindle?
424
+ assert @browser.webkit?
425
+ end
426
+
427
+ def test_kindle_fire
428
+ @browser.ua = KINDLE_FIRE
429
+
430
+ assert @browser.kindle?
431
+ assert @browser.webkit?
432
+ end
370
433
  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
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,56 +9,88 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-06 00:00:00.000000000 Z
12
+ date: 2012-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '3.0'
21
+ version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ~>
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '3.0'
29
+ version: '0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rake
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ~>
35
+ - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: '0.9'
37
+ version: '0'
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: '0.9'
45
+ version: '0'
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rdoc
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ~>
51
+ - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: '3.12'
53
+ version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ~>
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '3.12'
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: pry
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: awesome_print
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
62
94
  description: Do some browser detection with Ruby.
63
95
  email:
64
96
  - fnando.vieira@gmail.com
@@ -89,24 +121,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
121
  - - ! '>='
90
122
  - !ruby/object:Gem::Version
91
123
  version: '0'
92
- segments:
93
- - 0
94
- hash: 701530694838661058
95
124
  required_rubygems_version: !ruby/object:Gem::Requirement
96
125
  none: false
97
126
  requirements:
98
127
  - - ! '>='
99
128
  - !ruby/object:Gem::Version
100
129
  version: '0'
101
- segments:
102
- - 0
103
- hash: 701530694838661058
104
130
  requirements: []
105
131
  rubyforge_project:
106
132
  rubygems_version: 1.8.23
107
133
  signing_key:
108
134
  specification_version: 3
109
135
  summary: Do some browser detection with Ruby.
110
- test_files:
111
- - test/browser_test.rb
112
- - test/test_helper.rb
136
+ test_files: []