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.
- 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: []
|