browser 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +26 -16
- data/README.rdoc +2 -1
- data/browser.gemspec +5 -3
- data/lib/browser.rb +13 -3
- data/lib/browser/version.rb +1 -1
- data/test/browser_test.rb +82 -19
- metadata +47 -23
data/Gemfile.lock
CHANGED
@@ -1,34 +1,41 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
browser (0.1.
|
4
|
+
browser (0.1.5)
|
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.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.
|
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.1.3)
|
19
|
+
activemodel (3.2.8)
|
20
|
+
activesupport (= 3.2.8)
|
21
21
|
builder (~> 3.0.0)
|
22
|
-
activesupport (3.2.
|
22
|
+
activesupport (3.2.8)
|
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
28
|
erubis (2.7.0)
|
27
29
|
hike (1.2.1)
|
28
|
-
i18n (0.6.
|
29
|
-
journey (1.0.
|
30
|
-
json (1.7.
|
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
|
58
|
+
actionpack
|
59
|
+
awesome_print
|
51
60
|
browser!
|
52
|
-
|
53
|
-
|
61
|
+
pry
|
62
|
+
rake
|
63
|
+
rdoc
|
data/README.rdoc
CHANGED
@@ -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">
|
43
|
+
<p class="disclaimer">You're running an older IE version. Please update it!</p>
|
43
44
|
<% end %>
|
44
45
|
|
45
46
|
== Maintainer
|
data/browser.gemspec
CHANGED
@@ -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"
|
21
|
-
s.add_development_dependency "rake"
|
22
|
-
s.add_development_dependency "rdoc"
|
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
|
data/lib/browser.rb
CHANGED
@@ -230,7 +230,7 @@ class Browser
|
|
230
230
|
|
231
231
|
# Detect if browser is mobile.
|
232
232
|
def mobile?
|
233
|
-
!!(ua =~ /(
|
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.
|
data/lib/browser/version.rb
CHANGED
data/test/browser_test.rb
CHANGED
@@ -1,25 +1,33 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
1
2
|
require "test_helper"
|
2
3
|
|
3
4
|
class BrowserTest < Test::Unit::TestCase
|
4
|
-
IPHONE
|
5
|
-
IPOD
|
6
|
-
IPAD
|
7
|
-
SAFARI
|
8
|
-
IE6
|
9
|
-
IE7
|
10
|
-
IE8
|
11
|
-
IE8_COMPAT
|
12
|
-
IE9
|
13
|
-
IE9_COMPAT
|
14
|
-
OPERA
|
15
|
-
FIREFOX
|
16
|
-
CHROME
|
17
|
-
ANDROID
|
18
|
-
TABLOID
|
19
|
-
BLACKBERRY
|
20
|
-
PSP
|
21
|
-
QUICKTIME
|
22
|
-
COREMEDIA
|
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
|
+
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-
|
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: '
|
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: '
|
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
|
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
|
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: '
|
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: '
|
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: []
|