user_agent_parser 0.1.2 → 1.0.0
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.
Potentially problematic release.
This version of user_agent_parser might be problematic. Click here for more details.
- data/Readme.md +1 -3
- data/lib/user_agent_parser/user_agent.rb +0 -1
- data/lib/user_agent_parser/version.rb +5 -0
- data/vendor/ua-parser/regexes.yaml +102 -28
- metadata +3 -3
data/Readme.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# UserAgentParser [](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
|
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
|
@@ -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+)(
|
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+)(
|
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|
|
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
|
-
#
|
332
|
-
#
|
381
|
+
# Tizen OS from Samsung
|
382
|
+
# spoofs Android so pushing it above
|
333
383
|
##########
|
334
|
-
- regex: '(
|
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.
|
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-
|
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:
|
50
|
+
hash: 2550516200831264271
|
51
51
|
requirements: []
|
52
52
|
rubyforge_project:
|
53
53
|
rubygems_version: 1.8.23
|