browser 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +4 -0
- data/Rakefile +0 -10
- data/lib/browser.rb +29 -6
- data/lib/browser/version.rb +1 -1
- data/test/browser_test.rb +32 -4
- metadata +3 -3
data/README.rdoc
CHANGED
data/Rakefile
CHANGED
@@ -1,17 +1,7 @@
|
|
1
|
-
require "rcov/rcovtask"
|
2
1
|
require "rake/testtask"
|
3
2
|
require "rake/rdoctask"
|
4
3
|
require "./lib/browser/version"
|
5
4
|
|
6
|
-
Rcov::RcovTask.new do |t|
|
7
|
-
t.test_files = FileList["test/**/*_test.rb"]
|
8
|
-
t.rcov_opts = ["--sort coverage", "--exclude .gem"]
|
9
|
-
|
10
|
-
t.output_dir = "coverage"
|
11
|
-
t.libs << "test"
|
12
|
-
t.verbose = true
|
13
|
-
end
|
14
|
-
|
15
5
|
Rake::TestTask.new do |t|
|
16
6
|
t.libs << "lib"
|
17
7
|
t.libs << "test"
|
data/lib/browser.rb
CHANGED
@@ -23,9 +23,13 @@ class Browser
|
|
23
23
|
:opera => "Opera",
|
24
24
|
:other => "Other",
|
25
25
|
:safari => "Safari",
|
26
|
-
:psp => "PlayStation Portable"
|
26
|
+
:psp => "PlayStation Portable",
|
27
|
+
:quicktime => "QuickTime",
|
28
|
+
:core_media => "Apple CoreMedia"
|
27
29
|
}
|
28
30
|
|
31
|
+
VERSION_REGEX = /(?:Version|MSIE|Opera|Firefox|Chrome|QuickTime|BlackBerry[^\/]+|CoreMedia v)[\/ ]?([a-z0-9.]+)/i
|
32
|
+
|
29
33
|
LANGUAGES = {
|
30
34
|
"af" => "Afrikaans",
|
31
35
|
"sq" => "Albanian",
|
@@ -177,6 +181,8 @@ class Browser
|
|
177
181
|
when blackberry? then :blackberry
|
178
182
|
when safari? then :safari
|
179
183
|
when psp? then :psp
|
184
|
+
when quicktime? then :quicktime
|
185
|
+
when core_media? then :core_media
|
180
186
|
else
|
181
187
|
:other
|
182
188
|
end
|
@@ -194,13 +200,13 @@ class Browser
|
|
194
200
|
|
195
201
|
# Return the full version.
|
196
202
|
def full_version
|
197
|
-
_, v = *ua.match(
|
203
|
+
_, v = *ua.match(VERSION_REGEX)
|
198
204
|
v || "0.0"
|
199
205
|
end
|
200
206
|
|
201
207
|
# Return true if browser supports some CSS 3 (Safari, Firefox, Opera & IE7+).
|
202
208
|
def capable?
|
203
|
-
|
209
|
+
webkit? || firefox? || opera? || (ie? && version >= "7")
|
204
210
|
end
|
205
211
|
|
206
212
|
# Detect if browser is WebKit-based.
|
@@ -208,11 +214,21 @@ class Browser
|
|
208
214
|
!!(ua =~ /AppleWebKit/i)
|
209
215
|
end
|
210
216
|
|
217
|
+
# Detect if browser is ios?.
|
218
|
+
def ios?
|
219
|
+
ipod? || ipad? || iphone?
|
220
|
+
end
|
221
|
+
|
211
222
|
# Detect if browser is mobile.
|
212
223
|
def mobile?
|
213
224
|
!!(ua =~ /(Mobile|Symbian|MIDP|Windows CE)/) || blackberry? || psp?
|
214
225
|
end
|
215
226
|
|
227
|
+
# Detect if browser is QuickTime
|
228
|
+
def quicktime?
|
229
|
+
!!(ua =~ /QuickTime/i)
|
230
|
+
end
|
231
|
+
|
216
232
|
# Detect if browser is BlackBerry
|
217
233
|
def blackberry?
|
218
234
|
!!(ua =~ /BlackBerry/)
|
@@ -223,6 +239,11 @@ class Browser
|
|
223
239
|
!!(ua =~ /Android/)
|
224
240
|
end
|
225
241
|
|
242
|
+
# Detect if browser is Apple CoreMedia.
|
243
|
+
def core_media?
|
244
|
+
!!(ua =~ /CoreMedia/)
|
245
|
+
end
|
246
|
+
|
226
247
|
# Detect if browser is iPhone.
|
227
248
|
def iphone?
|
228
249
|
!!(ua =~ /iPhone/)
|
@@ -240,7 +261,7 @@ class Browser
|
|
240
261
|
|
241
262
|
# Detect if browser is Safari.
|
242
263
|
def safari?
|
243
|
-
|
264
|
+
ua =~ /Safari/ && ua !~ /Chrome/
|
244
265
|
end
|
245
266
|
|
246
267
|
# Detect if browser is Firefox.
|
@@ -318,8 +339,10 @@ class Browser
|
|
318
339
|
def meta
|
319
340
|
Array.new.tap do |m|
|
320
341
|
m << id
|
321
|
-
m << "webkit
|
322
|
-
m << "
|
342
|
+
m << "webkit" if webkit?
|
343
|
+
m << "ios" if ios?
|
344
|
+
m << "safari safari#{version}" if safari?
|
345
|
+
m << "#{id}#{version}" unless safari? || chrome?
|
323
346
|
m << platform
|
324
347
|
m << "capable" if capable?
|
325
348
|
m << "mobile" if mobile?
|
data/lib/browser/version.rb
CHANGED
data/test/browser_test.rb
CHANGED
@@ -25,6 +25,8 @@ class BrowserTest < Test::Unit::TestCase
|
|
25
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"
|
26
26
|
BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
27
27
|
PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
|
28
|
+
QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
|
29
|
+
COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
|
28
30
|
|
29
31
|
def setup
|
30
32
|
@browser = Browser.new
|
@@ -71,6 +73,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
71
73
|
assert @browser.webkit?
|
72
74
|
assert @browser.mobile?
|
73
75
|
assert @browser.capable?
|
76
|
+
assert @browser.ios?
|
74
77
|
assert_equal "3.0", @browser.full_version
|
75
78
|
assert_equal "3", @browser.version
|
76
79
|
end
|
@@ -95,6 +98,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
95
98
|
assert @browser.webkit?
|
96
99
|
assert @browser.mobile?
|
97
100
|
assert @browser.capable?
|
101
|
+
assert @browser.ios?
|
98
102
|
assert_equal "3.0", @browser.full_version
|
99
103
|
assert_equal "3", @browser.version
|
100
104
|
end
|
@@ -107,6 +111,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
107
111
|
assert @browser.safari?
|
108
112
|
assert @browser.webkit?
|
109
113
|
assert @browser.capable?
|
114
|
+
assert @browser.ios?
|
110
115
|
assert_equal "4.0.4", @browser.full_version
|
111
116
|
assert_equal "4", @browser.version
|
112
117
|
end
|
@@ -180,7 +185,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
180
185
|
|
181
186
|
assert_equal "Chrome", @browser.name
|
182
187
|
assert @browser.chrome?
|
183
|
-
assert
|
188
|
+
assert !@browser.safari?
|
184
189
|
assert @browser.webkit?
|
185
190
|
assert @browser.capable?
|
186
191
|
assert_equal "5.0.375.99", @browser.full_version
|
@@ -211,6 +216,24 @@ class BrowserTest < Test::Unit::TestCase
|
|
211
216
|
assert_equal "4", @browser.version
|
212
217
|
end
|
213
218
|
|
219
|
+
def test_detect_quicktime
|
220
|
+
@browser.ua = QUICKTIME
|
221
|
+
|
222
|
+
assert_equal "QuickTime", @browser.name
|
223
|
+
assert @browser.quicktime?
|
224
|
+
assert_equal "7.6.8", @browser.full_version
|
225
|
+
assert_equal "7", @browser.version
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_detect_core_media
|
229
|
+
@browser.ua = COREMEDIA
|
230
|
+
|
231
|
+
assert_equal "Apple CoreMedia", @browser.name
|
232
|
+
assert @browser.core_media?
|
233
|
+
assert_equal "1.0.0.10F569", @browser.full_version
|
234
|
+
assert_equal "1", @browser.version
|
235
|
+
end
|
236
|
+
|
214
237
|
def test_detect_psp
|
215
238
|
@browser.ua = PSP
|
216
239
|
|
@@ -243,12 +266,17 @@ class BrowserTest < Test::Unit::TestCase
|
|
243
266
|
|
244
267
|
def test_return_string_representation
|
245
268
|
@browser.ua = CHROME
|
246
|
-
assert_equal "chrome webkit
|
269
|
+
assert_equal "chrome webkit mac capable", @browser.to_s
|
247
270
|
end
|
248
271
|
|
249
|
-
def
|
272
|
+
def test_return_string_representation_for_ios
|
250
273
|
@browser.ua = IPHONE
|
251
|
-
assert_equal "iphone webkit safari safari3 mac capable mobile", @browser.to_s
|
274
|
+
assert_equal "iphone webkit ios safari safari3 mac capable mobile", @browser.to_s
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_return_string_representation_for_mobile
|
278
|
+
@browser.ua = BLACKBERRY
|
279
|
+
assert_equal "blackberry blackberry4 other mobile", @browser.to_s
|
252
280
|
end
|
253
281
|
|
254
282
|
def test_return_string_representation_for_handcap
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Nando Vieira
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-28 00:00:00 -02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|