user_agent_parser 2.1.0 → 2.1.1
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.
- 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
|