browser 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []