user_agent_parser 2.1.0 → 2.1.1
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.
- checksums.yaml +6 -14
- data/Readme.md +23 -2
- data/vendor/ua-parser/regexes.yaml +107 -19
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MGJhMmVmNjMxMDk0ZWUzNDM1MDlmM2NmY2JlNDk4MTVjYzEyNjIxZGFjMDli
|
10
|
-
MWYyMzg1ZTIwZTdkNzIxNmRjZTI3NTMyNWU1YzFhNDE1ZGMxZjM5MTZjMTYw
|
11
|
-
ZGM3NWFmODMyY2NkZWRiMjkwNTcyODUwY2ZhZWM4Njg4YTk4ZDc=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZWU1ZjE4YTQ1MmFiNjZlZGE0NGQzOTQ2ODQ2OGEwZmE0MTBhYWZkOGIzZjE5
|
14
|
-
ZWQwYjJjZDI1MGJmMWMyMDVlYTE4YzkxNmRhZjJlMDYyNGQ2YWEzY2IyYTE0
|
15
|
-
ZmQ4MjM4ZjlhOTA2MDQ1MGZiZGVjMmEwNjAwMjE4OTIxN2Q1Zjk=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5e20682e690e1e3552bc54b1ef9849ab8febc3ec
|
4
|
+
data.tar.gz: 8f7578787fc31f82e35909d34c86b1b00594b0b6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 488d4f2b60187907f65ad244786c6babfef042fa16d5a70292a29aac70fda3cbbf7dead070d2c30123b9a81c46c3385e4347994692342d3b127fb5baba01d6dd
|
7
|
+
data.tar.gz: a8213bbf5f3b4fb36665d36b7c401c6ec40acfcacc0b52340bcb36a402b038ea5c658837d449c2cd04ad04142334f080bd2479ae4ae5c7b4fd67f54e49c46b0b
|
data/Readme.md
CHANGED
@@ -43,6 +43,21 @@ parser.parse 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.53'
|
|
43
43
|
=> #<UserAgentParser::UserAgent Opera 10.53 (Windows XP)>
|
44
44
|
```
|
45
45
|
|
46
|
+
In a larger application, you could store a parser in a global to avoid repeat pattern loading:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
module MyApplication
|
50
|
+
|
51
|
+
# Instantiate the parser on load as it's quite expensive
|
52
|
+
USER_AGENT_PARSER = UserAgentParser::Parser.new
|
53
|
+
|
54
|
+
def self.user_agent_parser
|
55
|
+
USER_AGENT_PARSER
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
```
|
60
|
+
|
46
61
|
## The pattern database
|
47
62
|
|
48
63
|
The [ua-parser database](https://github.com/tobie/ua-parser/blob/master/regexes.yaml) is included via a [git submodule](http://help.github.com/submodules/). To update the database the submodule needs to be updated and the gem re-released (pull requests for this are very welcome!).
|
@@ -70,8 +85,14 @@ All accepted pull requests will earn you commit and release rights.
|
|
70
85
|
|
71
86
|
## Releasing a new version
|
72
87
|
|
73
|
-
1. Update the version in user_agent_parser.gemspec
|
74
|
-
2. `git commit user_agent_parser.gemspec
|
88
|
+
1. Update the version in `user_agent_parser.gemspec`
|
89
|
+
2. `git commit user_agent_parser.gemspec` with the following message format:
|
90
|
+
|
91
|
+
Version x.x.x
|
92
|
+
|
93
|
+
Changelog:
|
94
|
+
* Some new feature
|
95
|
+
* Some new bug fix
|
75
96
|
3. `rake release`
|
76
97
|
|
77
98
|
## License
|
@@ -1,6 +1,11 @@
|
|
1
1
|
user_agent_parsers:
|
2
2
|
#### SPECIAL CASES TOP ####
|
3
3
|
|
4
|
+
# HbbTV standard defines what features the browser should understand.
|
5
|
+
# but it's like targeting "HTML5 browsers", effective browser support depends on the model
|
6
|
+
# See os_parsers if you want to target a specific TV
|
7
|
+
- regex: '(HbbTV)/(\d+)\.(\d+)\.(\d+) \('
|
8
|
+
|
4
9
|
# must go before Firefox to catch SeaMonkey/Camino
|
5
10
|
- regex: '(SeaMonkey|Camino)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
|
6
11
|
|
@@ -65,6 +70,10 @@ user_agent_parsers:
|
|
65
70
|
- regex: '(?:Mobile Safari).*(OPR)/(\d+)\.(\d+)\.(\d+)'
|
66
71
|
family_replacement: 'Opera Mobile'
|
67
72
|
|
73
|
+
# Opera 15 for Desktop is similar to Chrome but includes an "OPR" Version string.
|
74
|
+
- regex: '(?:Chrome).*(OPR)/(\d+)\.(\d+)\.(\d+)'
|
75
|
+
family_replacement: 'Opera'
|
76
|
+
|
68
77
|
# Palm WebOS looks a lot like Safari.
|
69
78
|
- regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+))?'
|
70
79
|
family_replacement: 'webOS Browser'
|
@@ -88,7 +97,7 @@ user_agent_parsers:
|
|
88
97
|
family_replacement: 'Swiftfox'
|
89
98
|
|
90
99
|
# Rekonq
|
91
|
-
- regex: '(rekonq)/(\d+)\.(\d+) Safari'
|
100
|
+
- regex: '(rekonq)/(\d+)\.(\d+)\.?(\d+)? Safari'
|
92
101
|
family_replacement: 'Rekonq'
|
93
102
|
- regex: 'rekonq'
|
94
103
|
family_replacement: 'Rekonq'
|
@@ -137,9 +146,6 @@ user_agent_parsers:
|
|
137
146
|
- regex: '(SLP Browser)/(\d+)\.(\d+)'
|
138
147
|
family_replacement: 'Tizen Browser'
|
139
148
|
|
140
|
-
# Epiphany browser (identifies as Chromium)
|
141
|
-
- regex: '(Epiphany)/(\d+)\.(\d+).(\d+)'
|
142
|
-
|
143
149
|
# Sogou Explorer 2.X
|
144
150
|
- regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
|
145
151
|
family_replacement: 'Sogou Explorer'
|
@@ -177,16 +183,25 @@ user_agent_parsers:
|
|
177
183
|
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).* MRCHROME'
|
178
184
|
family_replacement: 'Mail.ru Chromium Browser'
|
179
185
|
|
186
|
+
# AOL Browser (IE-based)
|
187
|
+
- regex: '(AOL) (\d+)\.(\d+); AOLBuild (\d+)'
|
188
|
+
|
180
189
|
#### END SPECIAL CASES TOP ####
|
181
190
|
|
182
191
|
#### MAIN CASES - this catches > 50% of all browsers ####
|
183
192
|
|
184
193
|
# Browser/major_version.minor_version.beta_version
|
185
|
-
- regex: '(AdobeAIR|
|
194
|
+
- regex: '(AdobeAIR|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Flock|Netscape|Lunascape|WebPilot|Vodafone|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave)/(\d+)\.(\d+)\.(\d+)'
|
195
|
+
|
196
|
+
# Chrome/Chromium/major_version.minor_version.beta_version
|
197
|
+
- regex: '(Chromium|Chrome)/(\d+)\.(\d+)\.(\d+)'
|
186
198
|
|
187
199
|
# Browser/major_version.minor_version
|
188
200
|
- regex: '(Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|Vodafone|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser)/(\d+)\.(\d+)'
|
189
201
|
|
202
|
+
# Chrome/Chromium/major_version.minor_version
|
203
|
+
- regex: '(Chromium|Chrome)/(\d+)\.(\d+)'
|
204
|
+
|
190
205
|
# Browser major_version.minor_version.beta_version (space instead of slash)
|
191
206
|
- regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
|
192
207
|
# Browser major_version.minor_version (space instead of slash)
|
@@ -342,6 +357,9 @@ user_agent_parsers:
|
|
342
357
|
- regex: '(Pre)/(\d+)\.(\d+)'
|
343
358
|
family_replacement: 'Palm Pre'
|
344
359
|
|
360
|
+
# fork of Links
|
361
|
+
- regex: '(ELinks)/(\d+)\.(\d+)'
|
362
|
+
- regex: '(ELinks) \((\d+)\.(\d+)'
|
345
363
|
- regex: '(Links) \((\d+)\.(\d+)'
|
346
364
|
|
347
365
|
- regex: '(QtWeb) Internet Browser/(\d+)\.(\d+)'
|
@@ -382,10 +400,70 @@ user_agent_parsers:
|
|
382
400
|
- regex: '([MS]?IE) (\d+)\.(\d+)'
|
383
401
|
family_replacement: 'IE'
|
384
402
|
|
403
|
+
- regex: 'Trident(.*)rv.(\d+)\.(\d+)'
|
404
|
+
family_replacement: 'IE'
|
405
|
+
|
385
406
|
- regex: '(python-requests)/(\d+)\.(\d+)'
|
386
407
|
family_replacement: 'Python Requests'
|
387
408
|
|
388
409
|
os_parsers:
|
410
|
+
##########
|
411
|
+
# HbbTV vendors
|
412
|
+
##########
|
413
|
+
|
414
|
+
# starts with the easy one : Panasonic seems consistent across years, hope it will continue
|
415
|
+
#HbbTV/1.1.1 (;Panasonic;VIERA 2011;f.532;0071-0802 2000-0000;)
|
416
|
+
#HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)
|
417
|
+
#HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.672;4101-0003 0002-0000;)
|
418
|
+
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Panasonic);VIERA ([0-9]{4});'
|
419
|
+
|
420
|
+
# Sony is consistent too but do not place year like the other
|
421
|
+
# Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11
|
422
|
+
# Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL40HX751; PKG1.902EUA; 2012;);; en) Presto/2.10.250 Version/11.60
|
423
|
+
# Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL22EX320; PKG4.017EUA; 2011;);; en) Presto/2.7.61 Version/11.00
|
424
|
+
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(; (Sony);.*;.*; ([0-9]{4});\)'
|
425
|
+
|
426
|
+
|
427
|
+
# LG is consistent too, but we need to add manually the year model
|
428
|
+
#Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)
|
429
|
+
#Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ HbbTV/1.1.1 ( ;LGE ;NetCast 3.0 ;1.0 ;1.0M ;)
|
430
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \( ;(LG)E ;NetCast 4.0'
|
431
|
+
os_v1_replacement: '2013'
|
432
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \( ;(LG)E ;NetCast 3.0'
|
433
|
+
os_v1_replacement: '2012'
|
434
|
+
|
435
|
+
# Samsung is on its way of normalizing their user-agent
|
436
|
+
# HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1102.2;;) WebKit
|
437
|
+
# HbbTV/1.1.1 (;Samsung;SmartTV2013;T-MST12DEUC-1102.1;;) WebKit
|
438
|
+
# HbbTV/1.1.1 (;Samsung;SmartTV2012;;;) WebKit
|
439
|
+
# HbbTV/1.1.1 (;;;;;) Maple_2011
|
440
|
+
- regex: 'HbbTV/1.1.1 \(;;;;;\) Maple_2011'
|
441
|
+
os_replacement: 'Samsung'
|
442
|
+
os_v1_replacement: '2011'
|
443
|
+
# manage the two models of 2013
|
444
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.*FXPDEUC'
|
445
|
+
os_v2_replacement: 'UE40F7000'
|
446
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});.*MST12DEUC'
|
447
|
+
os_v2_replacement: 'UE32F4500'
|
448
|
+
# generic Samsung (works starting in 2012)
|
449
|
+
#- regex: 'HbbTV/\d+\.\d+\.\d+ \(;(Samsung);SmartTV([0-9]{4});'
|
450
|
+
|
451
|
+
# Philips : not found any other way than a manual mapping
|
452
|
+
# Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.1.3 PHILIPSTV/1.1.1; en) Presto/2.10.250 Version/11.60
|
453
|
+
# Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70
|
454
|
+
- regex: 'HbbTV/1.1.1 \(; (Philips);.*NETTV/4'
|
455
|
+
os_v1_replacement: '2013'
|
456
|
+
- regex: 'HbbTV/1.1.1 \(; (Philips);.*NETTV/3'
|
457
|
+
os_v1_replacement: '2012'
|
458
|
+
- regex: 'HbbTV/1.1.1 \(; (Philips);.*NETTV/2'
|
459
|
+
os_v1_replacement: '2011'
|
460
|
+
|
461
|
+
# the HbbTV emulator developers use HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20
|
462
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+.*(firetv)-firefox-plugin (\d+).(\d+).(\d+)'
|
463
|
+
os_replacement: 'FireHbbTV'
|
464
|
+
|
465
|
+
# generic HbbTV, hoping to catch manufacturer name (always after 2nd comma) and the first string that looks like a 2011-2019 year
|
466
|
+
- regex: 'HbbTV/\d+\.\d+\.\d+ \(.*; ?([a-zA-Z]+) ?;.*(201[1-9]).*\)'
|
389
467
|
|
390
468
|
##########
|
391
469
|
# Android
|
@@ -427,7 +505,7 @@ os_parsers:
|
|
427
505
|
# lots of ua strings have Windows NT 4.1 !?!?!?!? !?!? !? !????!?! !!! ??? !?!?! ?
|
428
506
|
# (very) roughly ordered in terms of frequency of occurence of regex (win xp currently most frequent, etc)
|
429
507
|
##########
|
430
|
-
|
508
|
+
|
431
509
|
- regex: '(Windows (?:NT 5\.2|NT 5\.1))'
|
432
510
|
os_replacement: 'Windows XP'
|
433
511
|
|
@@ -442,6 +520,9 @@ os_parsers:
|
|
442
520
|
- regex: '(Windows NT 6\.0)'
|
443
521
|
os_replacement: 'Windows Vista'
|
444
522
|
|
523
|
+
- regex: '(Win 9x 4\.90)'
|
524
|
+
os_replacement: 'Windows Me'
|
525
|
+
|
445
526
|
- regex: '(Windows 98|Windows XP|Windows ME|Windows 95|Windows CE|Windows 7|Windows NT 4\.0|Windows Vista|Windows 2000|Windows 3.1)'
|
446
527
|
|
447
528
|
- regex: '(Windows NT 6\.2; ARM;)'
|
@@ -503,8 +584,6 @@ os_parsers:
|
|
503
584
|
|
504
585
|
- regex: '(AppleTV)/(\d+)\.(\d+)'
|
505
586
|
os_replacement: 'ATV OS X'
|
506
|
-
os_v1_replacement: '$1'
|
507
|
-
os_v2_replacement: '$2'
|
508
587
|
|
509
588
|
##########
|
510
589
|
# Chrome OS
|
@@ -518,9 +597,10 @@ os_parsers:
|
|
518
597
|
##########
|
519
598
|
# Linux distros
|
520
599
|
##########
|
521
|
-
- regex: '(
|
600
|
+
- regex: '([Dd]ebian)'
|
601
|
+
os_replacement: 'Debian'
|
522
602
|
- regex: '(Linux Mint)(?:/(\d+))?'
|
523
|
-
- regex: '(Mandriva)(?: Linux)?/(\d+
|
603
|
+
- regex: '(Mandriva)(?: Linux)?/(?:[\d.-]+m[a-z]{2}(\d+).(\d))?'
|
524
604
|
|
525
605
|
##########
|
526
606
|
# Symbian + Symbian OS
|
@@ -580,7 +660,7 @@ os_parsers:
|
|
580
660
|
##########
|
581
661
|
- regex: '(GoogleTV) (\d+)\.(\d+)\.(\d+)'
|
582
662
|
# Old style
|
583
|
-
- regex: '(GoogleTV)
|
663
|
+
- regex: '(GoogleTV)/[\da-z]+'
|
584
664
|
|
585
665
|
- regex: '(WebTV)/(\d+).(\d+)'
|
586
666
|
|
@@ -596,16 +676,17 @@ os_parsers:
|
|
596
676
|
# since the majority of os cases are very specific, these go last
|
597
677
|
##########
|
598
678
|
# first.second.third.fourth bits
|
599
|
-
- regex: '(
|
679
|
+
- regex: '(Fedora|Red Hat|PCLinuxOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
600
680
|
|
601
681
|
# first.second.third bits
|
602
|
-
- regex: '(
|
682
|
+
- regex: '(Red Hat|Puppy|PCLinuxOS)/(\d+)\.(\d+)\.(\d+)'
|
603
683
|
|
604
684
|
# first.second bits
|
605
685
|
- regex: '(Ubuntu|Kindle|Bada|Lubuntu|BackTrack|Red Hat|Slackware)/(\d+)\.(\d+)'
|
606
686
|
|
607
687
|
# just os
|
608
|
-
- regex: '(Windows|OpenBSD|FreeBSD|NetBSD|
|
688
|
+
- regex: '(Windows|OpenBSD|FreeBSD|NetBSD|Android|WeTab)'
|
689
|
+
- regex: '(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Gentoo|Mageia)'
|
609
690
|
- regex: '(Linux)/(\d+)\.(\d+)'
|
610
691
|
- regex: '(Linux|BSD)'
|
611
692
|
- regex: 'SunOS'
|
@@ -690,11 +771,11 @@ device_parsers:
|
|
690
771
|
#########
|
691
772
|
# Android General Device Matching (far from perfect)
|
692
773
|
#########
|
693
|
-
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{2}; WOWMobile (.+) Build'
|
694
|
-
- regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{2}; (.+) Build'
|
695
|
-
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{2}; (.+) Build'
|
696
|
-
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+;[A-Za-z]{2}\-[A-Za-z]{2};(.+) Build'
|
697
|
-
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{2}; (.+) Build'
|
774
|
+
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; WOWMobile (.+) Build'
|
775
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\-update1; [A-Za-z]{2}\-[A-Za-z]{0,2}; (.+) Build'
|
776
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; (.+) Build'
|
777
|
+
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+;[A-Za-z]{2}\-[A-Za-z]{0,2};(.+) Build'
|
778
|
+
- regex: 'Android[\- ][\d]+\.[\d]+; [A-Za-z]{2}\-[A-Za-z]{0,2}; (.+) Build'
|
698
779
|
- regex: 'Android[\- ][\d]+\.[\d]+\.[\d]+; (.+) Build'
|
699
780
|
- regex: 'Android[\- ][\d]+\.[\d]+; (.+) Build'
|
700
781
|
|
@@ -777,6 +858,7 @@ device_parsers:
|
|
777
858
|
# cannot determine specific device type from ua string. (3g, 3gs, 4, etc)
|
778
859
|
- regex: '(iPad) Simulator;'
|
779
860
|
- regex: '(iPad);'
|
861
|
+
- regex: '(iPod) touch;'
|
780
862
|
- regex: '(iPod);'
|
781
863
|
- regex: '(iPhone) Simulator;'
|
782
864
|
- regex: '(iPhone);'
|
@@ -871,6 +953,12 @@ device_parsers:
|
|
871
953
|
- regex: 'Lenovo_([A-Za-z0-9]+)'
|
872
954
|
device_replacement: 'Lenovo $1'
|
873
955
|
|
956
|
+
##########
|
957
|
+
# HbbTV (European and Australian standard)
|
958
|
+
# written before the LG regexes, as LG is making HbbTV too
|
959
|
+
##########
|
960
|
+
- regex: '(HbbTV)/[0-9]+\.[0-9]+\.[0-9]+'
|
961
|
+
|
874
962
|
##########
|
875
963
|
# lg
|
876
964
|
##########
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: user_agent_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Lucas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A simple, comprehensive Ruby gem for parsing user agent strings with
|
14
14
|
the help of BrowserScope's UA database
|
@@ -36,17 +36,17 @@ require_paths:
|
|
36
36
|
- lib
|
37
37
|
required_ruby_version: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: 1.8.7
|
42
42
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
requirements: []
|
48
48
|
rubyforge_project:
|
49
|
-
rubygems_version: 2.
|
49
|
+
rubygems_version: 2.1.10
|
50
50
|
signing_key:
|
51
51
|
specification_version: 4
|
52
52
|
summary: A simple, comprehensive Ruby gem for parsing user agent strings with the
|