browser 0.1.0 → 0.1.1
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/Rakefile +1 -1
- data/lib/browser.rb +17 -3
- data/lib/browser/action_controller.rb +2 -2
- data/lib/browser/version.rb +1 -1
- data/test/browser_test.rb +28 -2
- metadata +3 -6
data/Rakefile
CHANGED
data/lib/browser.rb
CHANGED
@@ -21,7 +21,9 @@ class Browser
|
|
21
21
|
:iphone => "iPhone",
|
22
22
|
:ipod => "iPod Touch",
|
23
23
|
:opera => "Opera",
|
24
|
-
:other => "Other"
|
24
|
+
:other => "Other",
|
25
|
+
:safari => "Safari",
|
26
|
+
:psp => "PlayStation Portable"
|
25
27
|
}
|
26
28
|
|
27
29
|
LANGUAGES = {
|
@@ -173,6 +175,8 @@ class Browser
|
|
173
175
|
when firefox? then :firefox
|
174
176
|
when android? then :android
|
175
177
|
when blackberry? then :blackberry
|
178
|
+
when safari? then :safari
|
179
|
+
when psp? then :psp
|
176
180
|
else
|
177
181
|
:other
|
178
182
|
end
|
@@ -199,9 +203,14 @@ class Browser
|
|
199
203
|
safari? || firefox? || opera? || (ie? && version >= "7")
|
200
204
|
end
|
201
205
|
|
206
|
+
# Detect if browser is WebKit-based.
|
207
|
+
def webkit?
|
208
|
+
!!(ua =~ /AppleWebKit/i)
|
209
|
+
end
|
210
|
+
|
202
211
|
# Detect if browser is mobile.
|
203
212
|
def mobile?
|
204
|
-
!!(ua =~ /(Mobile|Symbian|MIDP|Windows CE)/) || blackberry?
|
213
|
+
!!(ua =~ /(Mobile|Symbian|MIDP|Windows CE)/) || blackberry? || psp?
|
205
214
|
end
|
206
215
|
|
207
216
|
# Detect if browser is BlackBerry
|
@@ -269,6 +278,11 @@ class Browser
|
|
269
278
|
ie? && version == "9"
|
270
279
|
end
|
271
280
|
|
281
|
+
# Detect if browser is running from PSP.
|
282
|
+
def psp?
|
283
|
+
!!(ua =~ /PSP/)
|
284
|
+
end
|
285
|
+
|
272
286
|
# Detect if browser is Opera.
|
273
287
|
def opera?
|
274
288
|
!!(ua =~ /Opera/)
|
@@ -304,7 +318,7 @@ class Browser
|
|
304
318
|
def meta
|
305
319
|
Array.new.tap do |m|
|
306
320
|
m << id
|
307
|
-
m << "safari safari#{version}" if safari?
|
321
|
+
m << "webkit safari safari#{version}" if safari?
|
308
322
|
m << "#{id}#{version}" unless safari?
|
309
323
|
m << platform
|
310
324
|
m << "capable" if capable?
|
@@ -7,8 +7,8 @@ class Browser
|
|
7
7
|
private
|
8
8
|
def browser
|
9
9
|
@browser ||= Browser.new(
|
10
|
-
:accept_language => request.headers["
|
11
|
-
:ua => request.headers["
|
10
|
+
:accept_language => request.headers["Accept-Language"],
|
11
|
+
:ua => request.headers["User-Agent"]
|
12
12
|
)
|
13
13
|
end
|
14
14
|
end
|
data/lib/browser/version.rb
CHANGED
data/test/browser_test.rb
CHANGED
@@ -14,6 +14,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
14
14
|
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"
|
15
15
|
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"
|
16
16
|
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"
|
17
|
+
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"
|
17
18
|
IE6 = "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
|
18
19
|
IE7 = "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
|
19
20
|
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)"
|
@@ -23,6 +24,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
23
24
|
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"
|
24
25
|
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"
|
25
26
|
BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
27
|
+
PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
|
26
28
|
|
27
29
|
def setup
|
28
30
|
@browser = Browser.new
|
@@ -66,18 +68,31 @@ class BrowserTest < Test::Unit::TestCase
|
|
66
68
|
assert_equal "iPhone", @browser.name
|
67
69
|
assert @browser.iphone?
|
68
70
|
assert @browser.safari?
|
71
|
+
assert @browser.webkit?
|
69
72
|
assert @browser.mobile?
|
70
73
|
assert @browser.capable?
|
71
74
|
assert_equal "3.0", @browser.full_version
|
72
75
|
assert_equal "3", @browser.version
|
73
76
|
end
|
74
77
|
|
78
|
+
def test_detect_safari
|
79
|
+
@browser.ua = SAFARI
|
80
|
+
|
81
|
+
assert_equal "Safari", @browser.name
|
82
|
+
assert @browser.safari?
|
83
|
+
assert @browser.webkit?
|
84
|
+
assert @browser.capable?
|
85
|
+
assert_equal "5.0.1", @browser.full_version
|
86
|
+
assert_equal "5", @browser.version
|
87
|
+
end
|
88
|
+
|
75
89
|
def test_detect_ipod
|
76
90
|
@browser.ua = IPOD
|
77
91
|
|
78
92
|
assert_equal "iPod Touch", @browser.name
|
79
93
|
assert @browser.ipod?
|
80
94
|
assert @browser.safari?
|
95
|
+
assert @browser.webkit?
|
81
96
|
assert @browser.mobile?
|
82
97
|
assert @browser.capable?
|
83
98
|
assert_equal "3.0", @browser.full_version
|
@@ -90,6 +105,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
90
105
|
assert_equal "iPad", @browser.name
|
91
106
|
assert @browser.ipad?
|
92
107
|
assert @browser.safari?
|
108
|
+
assert @browser.webkit?
|
93
109
|
assert @browser.capable?
|
94
110
|
assert_equal "4.0.4", @browser.full_version
|
95
111
|
assert_equal "4", @browser.version
|
@@ -165,6 +181,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
165
181
|
assert_equal "Chrome", @browser.name
|
166
182
|
assert @browser.chrome?
|
167
183
|
assert @browser.safari?
|
184
|
+
assert @browser.webkit?
|
168
185
|
assert @browser.capable?
|
169
186
|
assert_equal "5.0.375.99", @browser.full_version
|
170
187
|
assert_equal "5", @browser.version
|
@@ -176,6 +193,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
176
193
|
assert_equal "Android", @browser.name
|
177
194
|
assert @browser.android?
|
178
195
|
assert @browser.safari?
|
196
|
+
assert @browser.webkit?
|
179
197
|
assert @browser.mobile?
|
180
198
|
assert @browser.capable?
|
181
199
|
assert_equal "3.1.2", @browser.full_version
|
@@ -193,6 +211,14 @@ class BrowserTest < Test::Unit::TestCase
|
|
193
211
|
assert_equal "4", @browser.version
|
194
212
|
end
|
195
213
|
|
214
|
+
def test_detect_psp
|
215
|
+
@browser.ua = PSP
|
216
|
+
|
217
|
+
assert_equal "PlayStation Portable", @browser.name
|
218
|
+
assert @browser.psp?
|
219
|
+
assert @browser.mobile?
|
220
|
+
end
|
221
|
+
|
196
222
|
def test_detect_other_mobiles
|
197
223
|
@browser.ua = "Symbian OS"
|
198
224
|
assert @browser.mobile?
|
@@ -217,12 +243,12 @@ class BrowserTest < Test::Unit::TestCase
|
|
217
243
|
|
218
244
|
def test_return_string_representation
|
219
245
|
@browser.ua = CHROME
|
220
|
-
assert_equal "chrome safari safari5 mac capable", @browser.to_s
|
246
|
+
assert_equal "chrome webkit safari safari5 mac capable", @browser.to_s
|
221
247
|
end
|
222
248
|
|
223
249
|
def test_return_string_representation_for_mobile
|
224
250
|
@browser.ua = IPHONE
|
225
|
-
assert_equal "iphone safari safari3 mac capable mobile", @browser.to_s
|
251
|
+
assert_equal "iphone webkit safari safari3 mac capable mobile", @browser.to_s
|
226
252
|
end
|
227
253
|
|
228
254
|
def test_return_string_representation_for_handcap
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 27
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Nando Vieira
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-10-13 00:00:00 -03:00
|
19
18
|
default_executable:
|
20
19
|
dependencies: []
|
21
20
|
|
@@ -48,7 +47,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
48
47
|
requirements:
|
49
48
|
- - ">="
|
50
49
|
- !ruby/object:Gem::Version
|
51
|
-
hash: 3
|
52
50
|
segments:
|
53
51
|
- 0
|
54
52
|
version: "0"
|
@@ -57,7 +55,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
57
55
|
requirements:
|
58
56
|
- - ">="
|
59
57
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 3
|
61
58
|
segments:
|
62
59
|
- 0
|
63
60
|
version: "0"
|