browser 0.1.1 → 0.1.2
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/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
|
|