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 CHANGED
@@ -45,6 +45,10 @@ This adds a helper method called `browser`, that inspects your current user agen
45
45
 
46
46
  * Nando Vieira - http://nandovieira.com.br
47
47
 
48
+ == Contributors
49
+
50
+ * http://github.com/chrisyour/browser
51
+
48
52
  == License
49
53
 
50
54
  (The MIT License)
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(/(?:Version|MSIE|Opera|Firefox|Chrome|BlackBerry[^\/]+)[\/ ]([\d.]+)/)
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
- safari? || firefox? || opera? || (ie? && version >= "7")
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
- !!(ua =~ /Safari/)
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 safari safari#{version}" if safari?
322
- m << "#{id}#{version}" unless safari?
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?
@@ -2,7 +2,7 @@ class Browser
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 1
5
+ PATCH = 2
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
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 @browser.safari?
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 safari safari5 mac capable", @browser.to_s
269
+ assert_equal "chrome webkit mac capable", @browser.to_s
247
270
  end
248
271
 
249
- def test_return_string_representation_for_mobile
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
- - 1
9
- version: 0.1.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-13 00:00:00 -03:00
17
+ date: 2010-10-28 00:00:00 -02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20