user_agent_parser 0.1.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of user_agent_parser might be problematic. Click here for more details.

data/Readme.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # UserAgentParser [![Build Status](https://secure.travis-ci.org/toolmantim/user_agent_parser.png?branch=master)](http://travis-ci.org/toolmantim/user_agent_parser)
2
2
 
3
- UserAgentParser is a simple, comprehensive Ruby gem for parsing user agent strings. It uses [BrowserScope](http://www.browserscope.org/)'s parsing patterns via the most excellent [ua-parser project](https://github.com/tobie/ua-parser) by [Tobie Langel](https://github.com/tobie/).
3
+ UserAgentParser is a simple, comprehensive Ruby gem for parsing user agent strings. It uses [BrowserScope](http://www.browserscope.org/)'s [parsing patterns](https://github.com/tobie/ua-parser).
4
4
 
5
5
  ## Requirements
6
6
 
@@ -58,8 +58,6 @@ Finished tests in 144.220280s, 89.0027 tests/s, 234.9739 assertions/s.
58
58
 
59
59
  ## Limitations
60
60
 
61
- Chrome Frame detection is not yet included, but once [ua-parser issue #14](https://github.com/tobie/ua-parser/issues/14) is resolved this gem will be updated along with it.
62
-
63
61
  There's no support for providing overrides from Javascript user agent detection like there is with original BrowserScope library. The Javascript overrides were only necessary for detecting IE 9 Platform Preview and older versions of [Chrome Frame](https://developers.google.com/chrome/chrome-frame/).
64
62
 
65
63
  ## Contributing
@@ -13,7 +13,6 @@ module UserAgentParser
13
13
  def to_s
14
14
  s = family
15
15
  s += " #{version}" if version
16
- s += " (#{os})" if os
17
16
  s
18
17
  end
19
18
 
@@ -18,6 +18,11 @@ module UserAgentParser
18
18
  def [](segment)
19
19
  segments[segment]
20
20
  end
21
+
22
+ def major; self[0] end
23
+ def minor; self[1] end
24
+ def patch; self[2] end
25
+ def patch_minor; self[3] end
21
26
 
22
27
  def inspect
23
28
  "#<#{self.class} #{to_s}>"
@@ -1,6 +1,3 @@
1
- ### THIS FILE WAS COPIED ON JAN 26 2012.
2
- ### ORIGINAL IS AT: http://code.google.com/p/ua-parser/source/browse/trunk/resources/user_agent_parser.yaml
3
- ### Please review the CHANGELOG to see how this file differs from the original
4
1
  user_agent_parsers:
5
2
  #### SPECIAL CASES TOP ####
6
3
 
@@ -12,17 +9,25 @@ user_agent_parsers:
12
9
  - regex: '(SeaMonkey|Camino)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
13
10
 
14
11
  # Firefox
12
+ - regex: '(Pale[Mm]oon)/(\d+)\.(\d+)\.?(\d+)?'
13
+ family_replacement: 'Pale Moon (Firefox Variant)'
15
14
  - regex: '(Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
16
15
  family_replacement: 'Firefox Mobile'
17
16
  - regex: '(Fennec)/(\d+)\.(\d+)(pre)'
18
17
  family_replacment: 'Firefox Mobile'
19
18
  - regex: '(Fennec)/(\d+)\.(\d+)'
20
19
  family_replacement: 'Firefox Mobile'
20
+ - regex: 'Mobile.*(Firefox)/(\d+)\.(\d+)'
21
+ family_replacement: 'Firefox Mobile'
21
22
  - regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre)?)'
22
23
  family_replacement: 'Firefox ($1)'
23
- - regex: '(Firefox)/(\d+)\.(\d+)([ab]\d+[a-z]*)'
24
+ - regex: '(Firefox)/(\d+)\.(\d+)(a\d+[a-z]*)'
25
+ family_replacement: 'Firefox Alpha'
26
+ - regex: '(Firefox)/(\d+)\.(\d+)(b\d+[a-z]*)'
24
27
  family_replacement: 'Firefox Beta'
25
- - regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)([ab]\d+[a-z]*)'
28
+ - regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(a\d+[a-z]*)'
29
+ family_replacement: 'Firefox Alpha'
30
+ - regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(b\d+[a-z]*)'
26
31
  family_replacement: 'Firefox Beta'
27
32
  - regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*)?'
28
33
  family_replacement: 'Firefox ($1)'
@@ -113,6 +118,8 @@ user_agent_parsers:
113
118
  # Chrome Mobile
114
119
  - regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
115
120
  family_replacement: 'Chrome Mobile'
121
+ - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile'
122
+ family_replacement: 'Chrome Mobile'
116
123
 
117
124
  # Chrome Frame must come before MSIE.
118
125
  - regex: '(chromeframe)/(\d+)\.(\d+)\.(\d+)'
@@ -121,15 +128,26 @@ user_agent_parsers:
121
128
  # UC Browser
122
129
  - regex: '(UC Browser)(\d+)\.(\d+)\.(\d+)'
123
130
 
131
+ # Tizen Browser (second case included in browser/major.minor regex)
132
+ - regex: '(SLP Browser)/(\d+)\.(\d+)'
133
+ family_replacement: 'Tizen Browser'
134
+
135
+ # Epiphany browser (identifies as Chromium)
136
+ - regex: '(Epiphany)/(\d+)\.(\d+).(\d+)'
137
+
138
+ # Sogou Explorer 2.X
139
+ - regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
140
+ family_replacement: 'Sogou Explorer'
141
+
124
142
  #### END SPECIAL CASES TOP ####
125
143
 
126
144
  #### MAIN CASES - this catches > 50% of all browsers ####
127
145
 
128
146
  # Browser/major_version.minor_version.beta_version
129
- - regex: '(AdobeAIR|Chromium|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iron|Iris|UP\.Browser|Bunjaloo)/(\d+)\.(\d+)\.(\d+)'
147
+ - regex: '(AdobeAIR|Chromium|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iron|Iris|UP\.Browser|Bunjaloo|Google Earth|Raven for Mac)/(\d+)\.(\d+)\.(\d+)'
130
148
 
131
149
  # Browser/major_version.minor_version
132
- - regex: '(Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Iron|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo)/(\d+)\.(\d+)'
150
+ - regex: '(Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Iron|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris)/(\d+)\.(\d+)'
133
151
 
134
152
  # Browser major_version.minor_version.beta_version (space instead of slash)
135
153
  - regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
@@ -186,6 +204,7 @@ user_agent_parsers:
186
204
 
187
205
  - regex: '(BrowseX) \((\d+)\.(\d+)\.(\d+)'
188
206
 
207
+ # Polaris/d.d is above
189
208
  - regex: '(POLARIS)/(\d+)\.(\d+)'
190
209
  family_replacement: 'Polaris'
191
210
  - regex: '(Embider)/(\d+)\.(\d+)'
@@ -263,6 +282,10 @@ user_agent_parsers:
263
282
  # Amazon Silk, should go before Safari
264
283
  - regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+))?'
265
284
 
285
+ # WebKit Nightly
286
+ - regex: '(AppleWebKit)/(\d+)\.?(\d+)?\+ .* Version/\d+\.\d+.\d+ Safari/'
287
+ family_replacement: 'WebKit Nightly'
288
+
266
289
  # Safari
267
290
  - regex: '(Version)/(\d+)\.(\d+)(?:\.(\d+))?.*Safari/'
268
291
  family_replacement: 'Safari'
@@ -283,6 +306,33 @@ user_agent_parsers:
283
306
  family_replacement: 'IE'
284
307
 
285
308
  os_parsers:
309
+
310
+ ##########
311
+ # Android
312
+ # can actually detect rooted android os. do we care?
313
+ ##########
314
+ - regex: '(Android) (\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
315
+ - regex: '(Android)\-(\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
316
+
317
+ - regex: '(Android) Donut'
318
+ os_v1_replacement: '1'
319
+ os_v2_replacement: '2'
320
+
321
+ - regex: '(Android) Eclair'
322
+ os_v1_replacement: '2'
323
+ os_v2_replacement: '1'
324
+
325
+ - regex: '(Android) Froyo'
326
+ os_v1_replacement: '2'
327
+ os_v2_replacement: '2'
328
+
329
+ - regex: '(Android) Gingerbread'
330
+ os_v1_replacement: '2'
331
+ os_v2_replacement: '3'
332
+
333
+ - regex: '(Android) Honeycomb'
334
+ os_v1_replacement: '3'
335
+
286
336
  ##########
287
337
  # Windows
288
338
  # http://en.wikipedia.org/wiki/Windows_NT#Releases
@@ -328,30 +378,12 @@ os_parsers:
328
378
  os_replacement: 'Windows 98'
329
379
 
330
380
  ##########
331
- # Android
332
- # can actually detect rooted android os. do we care?
381
+ # Tizen OS from Samsung
382
+ # spoofs Android so pushing it above
333
383
  ##########
334
- - regex: '(Android) (\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
335
- - regex: '(Android)\-(\d+)\.(\d+)(?:[.\-]([a-z0-9]+))?'
336
-
337
- - regex: '(Android) Donut'
338
- os_v1_replacement: '1'
339
- os_v2_replacement: '2'
340
-
341
- - regex: '(Android) Eclair'
342
- os_v1_replacement: '2'
343
- os_v2_replacement: '1'
344
-
345
- - regex: '(Android) Froyo'
346
- os_v1_replacement: '2'
347
- os_v2_replacement: '2'
384
+ - regex: '(Tizen)/(\d+)\.(\d+)'
348
385
 
349
- - regex: '(Android) Gingerbread'
350
- os_v1_replacement: '2'
351
- os_v2_replacement: '3'
352
386
 
353
- - regex: '(Android) Honeycomb'
354
- os_v1_replacement: '3'
355
387
 
356
388
  ##########
357
389
  # Mac OS
@@ -502,6 +534,7 @@ device_parsers:
502
534
  - regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; [A-z]{2}\-[A-z]{2}\; (.+) Build'
503
535
  - regex: 'Android[\- ][\d]+\.[\d]+\-update1\; [A-z]{2}\-[A-z]{2}\; (.+) Build'
504
536
  - regex: 'Android[\- ][\d]+\.[\d]+\; [A-z]{2}\-[A-z]{2}\; (.+) Build'
537
+ - regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; (.+) Build'
505
538
 
506
539
  ##########
507
540
  # NOKIA
@@ -734,3 +767,44 @@ device_parsers:
734
767
  ##########
735
768
  - regex: '(bot|borg|google(^tv)|yahoo|slurp|msnbot|msrbot|openbot|archiver|netresearch|lycos|scooter|altavista|teoma|gigabot|baiduspider|blitzbot|oegp|charlotte|furlbot|http%20client|polybot|htdig|ichiro|mogimogi|larbin|pompos|scrubby|searchsight|seekbot|semanticdiscovery|silk|snappy|speedy|spider|voila|vortex|voyager|zao|zeal|fast\-webcrawler|converacrawler|dataparksearch|findlinks)'
736
769
  device_replacement: 'Spider'
770
+
771
+
772
+ mobile_user_agent_families:
773
+ - 'Firefox Mobile'
774
+ - 'Opera Mobile'
775
+ - 'Opera Mini'
776
+ - 'Mobile Safari'
777
+ - 'webOS'
778
+ - 'IE Mobile'
779
+ - 'Playstation Portable'
780
+ - 'Nokia'
781
+ - 'Blackberry'
782
+ - 'Palm'
783
+ - 'Silk'
784
+ - 'Android'
785
+ - 'Maemo'
786
+ - 'Obigo'
787
+ - 'Netfront'
788
+ - 'AvantGo'
789
+ - 'Teleca'
790
+ - 'SEMC-Browser'
791
+ - 'Bolt'
792
+ - 'Iris'
793
+ - 'UP.Browser'
794
+ - 'Symphony'
795
+ - 'Minimo'
796
+ - 'Bunjaloo'
797
+ - 'Jasmine'
798
+ - 'Dolfin'
799
+ - 'Polaris'
800
+ - 'BREW'
801
+ - 'Chrome Mobile'
802
+ - 'UC Browser'
803
+ - 'Tizen Browser'
804
+
805
+ # Some select mobile OSs report a desktop browser.
806
+ # make sure we note they're mobile
807
+ mobile_os_families:
808
+ - 'Windows Phone 6.5'
809
+ - 'Windows CE'
810
+ - 'Symbian OS'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: user_agent_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-06 00:00:00.000000000 Z
12
+ date: 2012-06-03 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A simple, comprehensive Ruby gem for parsing user agent strings with
15
15
  the help of BrowserScope's UA database
@@ -47,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  version: '0'
48
48
  segments:
49
49
  - 0
50
- hash: -1400916062182303731
50
+ hash: 2550516200831264271
51
51
  requirements: []
52
52
  rubyforge_project:
53
53
  rubygems_version: 1.8.23