device_detector 0.0.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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +44 -0
- data/Rakefile +11 -0
- data/device_detector.gemspec +23 -0
- data/lib/device_detector.rb +31 -0
- data/lib/device_detector/client.rb +18 -0
- data/lib/device_detector/client_detector.rb +41 -0
- data/lib/device_detector/os.rb +19 -0
- data/lib/device_detector/os_detector.rb +29 -0
- data/lib/device_detector/version.rb +3 -0
- data/lib/device_detector/version_extractor.rb +36 -0
- data/regexes/browser_engines.yml +27 -0
- data/regexes/browsers.yml +742 -0
- data/regexes/feed_readers.yml +103 -0
- data/regexes/libraries.yml +26 -0
- data/regexes/mediaplayers.yml +58 -0
- data/regexes/mobile_apps.yml +11 -0
- data/regexes/oss.yml +480 -0
- data/regexes/pim.yml +38 -0
- data/spec/device_detector/client_detector_spec.rb +20 -0
- data/spec/device_detector/client_spec.rb +33 -0
- data/spec/device_detector/os_detector_spec.rb +21 -0
- data/spec/device_detector/os_spec.rb +33 -0
- data/spec/device_detector/version_extractor_spec.rb +62 -0
- data/spec/device_detector_spec.rb +23 -0
- data/spec/spec_helper.rb +13 -0
- metadata +115 -0
@@ -0,0 +1,103 @@
|
|
1
|
+
###############
|
2
|
+
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
|
+
#
|
4
|
+
# @link http://piwik.org
|
5
|
+
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
|
+
###############
|
7
|
+
|
8
|
+
- regex: 'Akregator(?:/(\d+[\.\d]+))?'
|
9
|
+
name: 'Akregator'
|
10
|
+
version: '$1'
|
11
|
+
url: 'http://userbase.kde.org/Akregator'
|
12
|
+
type: 'Feed Reader'
|
13
|
+
|
14
|
+
- regex: 'Apple-PubSub(?:/(\d+[\.\d]+))?'
|
15
|
+
name: 'Apple PubSub'
|
16
|
+
version: '$1'
|
17
|
+
url: 'https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/pubsub.1.html'
|
18
|
+
type: 'Feed Reader'
|
19
|
+
|
20
|
+
- regex: 'FeedDemon(?:/(\d+[\.\d]+))?'
|
21
|
+
name: 'FeedDemon'
|
22
|
+
version: '$1'
|
23
|
+
url: 'http://www.feeddemon.com/'
|
24
|
+
type: 'Feed Reader'
|
25
|
+
|
26
|
+
- regex: 'Feeddler(?:RSS|PRO)(?:[/ ](\d+[\.\d]+))?'
|
27
|
+
name: 'Feeddler RSS Reader'
|
28
|
+
version: '$1'
|
29
|
+
url: 'http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/'
|
30
|
+
type: 'Feed Reader App'
|
31
|
+
|
32
|
+
- regex: 'JetBrains Omea Reader(?:[/ ](\d+[\.\d]+))?'
|
33
|
+
name: 'JetBrains Omea Reader'
|
34
|
+
version: '$1'
|
35
|
+
url: 'http://www.jetbrains.com/omea/reader/'
|
36
|
+
type: 'Feed Reader'
|
37
|
+
|
38
|
+
- regex: 'Liferea(?:[/ ](\d+[\.\d]+))?'
|
39
|
+
name: 'Liferea'
|
40
|
+
version: '$1'
|
41
|
+
url: 'http://liferea.sf.net/'
|
42
|
+
type: 'Feed Reader'
|
43
|
+
|
44
|
+
- regex: 'NetNewsWire(?:[/ ](\d+[\.\d]+))?'
|
45
|
+
name: 'NetNewsWire'
|
46
|
+
version: '$1'
|
47
|
+
url: 'http://netnewswireapp.com/'
|
48
|
+
type: 'Feed Reader'
|
49
|
+
|
50
|
+
- regex: 'NewsBlur (?:iPhone|iPad) App(?: v(\d+[\.\d]+))?'
|
51
|
+
name: 'NewsBlur Mobile App'
|
52
|
+
version: '$1'
|
53
|
+
url: 'http://www.newsblur.com'
|
54
|
+
type: 'Feed Reader App'
|
55
|
+
|
56
|
+
- regex: 'NewsBlur(?:/(\d+[\.\d]+))'
|
57
|
+
name: 'NewsBlur'
|
58
|
+
version: '$1'
|
59
|
+
url: 'http://www.newsblur.com'
|
60
|
+
type: 'Feed Reader'
|
61
|
+
|
62
|
+
- regex: 'newsbeuter(?:[/ ](\d+[\.\d]+))?'
|
63
|
+
name: 'Newsbeuter'
|
64
|
+
version: '$1'
|
65
|
+
url: 'http://www.newsbeuter.org/'
|
66
|
+
type: 'Feed Reader'
|
67
|
+
|
68
|
+
- regex: 'Pulp(?:[/ ](\d+[\.\d]+))?'
|
69
|
+
name: 'Pulp'
|
70
|
+
version: '$1'
|
71
|
+
url: 'http://www.acrylicapps.com/pulp/'
|
72
|
+
type: 'Feed Reader App'
|
73
|
+
|
74
|
+
- regex: 'ReadKit(?:[/ ](\d+[\.\d]+))?'
|
75
|
+
name: 'ReadKit'
|
76
|
+
version: '$1'
|
77
|
+
url: 'http://readkitapp.com/'
|
78
|
+
type: 'Feed Reader App'
|
79
|
+
|
80
|
+
- regex: 'Reeder(?:[/ ](\d+[\.\d]+))?'
|
81
|
+
name: 'Reeder'
|
82
|
+
version: '$1'
|
83
|
+
url: 'http://reederapp.com/'
|
84
|
+
type: 'Feed Reader App'
|
85
|
+
|
86
|
+
- regex: 'RSSBandit(?:[/ ](\d+[\.\d]+))?'
|
87
|
+
name: 'RSS Bandit'
|
88
|
+
version: '$1'
|
89
|
+
url: 'http://www.rssbandit.org)'
|
90
|
+
type: 'Feed Reader'
|
91
|
+
|
92
|
+
- regex: 'RSS Junkie(?:[/ ](\d+[\.\d]+))?'
|
93
|
+
name: 'RSS Junkie'
|
94
|
+
version: '$1'
|
95
|
+
url: 'https://play.google.com/store/apps/details?id=com.bitpowder.rssjunkie'
|
96
|
+
type: 'Feed Reader App'
|
97
|
+
|
98
|
+
- regex: 'RSSOwl(?:[/ ](\d+[\.\d]+))?'
|
99
|
+
name: 'RSSOwl'
|
100
|
+
version: '$1'
|
101
|
+
url: 'http://www.rssowl.org/'
|
102
|
+
type: 'Feed Reader'
|
103
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
###############
|
2
|
+
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
|
+
#
|
4
|
+
# @link http://piwik.org
|
5
|
+
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
|
+
###############
|
7
|
+
|
8
|
+
- regex: 'Wget(?:/(\d+[\.\d]+))?'
|
9
|
+
name: 'Wget'
|
10
|
+
version: '$1'
|
11
|
+
|
12
|
+
- regex: '(?:lib)?curl(?:/(\d+[\.\d]+))?'
|
13
|
+
name: 'curl'
|
14
|
+
version: '$1'
|
15
|
+
|
16
|
+
- regex: 'python-requests(?:/(\d+[\.\d]+))?'
|
17
|
+
name: 'Python Requests'
|
18
|
+
version: '$1'
|
19
|
+
|
20
|
+
- regex: 'Python-urllib(?:/?(\d+[\.\d]+))?'
|
21
|
+
name: 'Python urllib'
|
22
|
+
version: '$1'
|
23
|
+
|
24
|
+
- regex: 'Java(?:/?(\d+[\.\d]+))?'
|
25
|
+
name: 'Java'
|
26
|
+
version: '$1'
|
@@ -0,0 +1,58 @@
|
|
1
|
+
###############
|
2
|
+
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
|
+
#
|
4
|
+
# @link http://piwik.org
|
5
|
+
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
|
+
###############
|
7
|
+
|
8
|
+
- regex: 'Banshee(?:[ /]([\d\.]+))?'
|
9
|
+
name: 'Banshee'
|
10
|
+
version: '$1'
|
11
|
+
|
12
|
+
- regex: 'Clementine(?:[ /]([\d\.]+))?'
|
13
|
+
name: 'Clementine'
|
14
|
+
version: '$1'
|
15
|
+
|
16
|
+
- regex: 'iTunes(?:/([\d\.]+))?'
|
17
|
+
name: 'iTunes'
|
18
|
+
version: '$1'
|
19
|
+
|
20
|
+
- regex: 'FlyCast(?:/([\d\.]+))?'
|
21
|
+
name: 'FlyCast'
|
22
|
+
version: '$1'
|
23
|
+
|
24
|
+
- regex: 'MediaMonkey(?:[ /](\d+[\.\d]+))?'
|
25
|
+
name: 'MediaMonkey'
|
26
|
+
version: '$1'
|
27
|
+
|
28
|
+
- regex: 'NexPlayer(?:/(\d+[\.\d]+))?'
|
29
|
+
name: 'NexPlayer'
|
30
|
+
version: '$1'
|
31
|
+
|
32
|
+
- regex: 'Nightingale(?:/([\d\.]+))?'
|
33
|
+
name: 'Nightingale'
|
34
|
+
version: '$1'
|
35
|
+
|
36
|
+
- regex: 'QuickTime(?:(?:(?:.+qtver=)|(?:(?: E-)?[\./]))([\d\.]+))?'
|
37
|
+
name: 'QuickTime'
|
38
|
+
version: '$1'
|
39
|
+
|
40
|
+
- regex: 'Songbird(?:/([\d\.]+))?'
|
41
|
+
name: 'Songbird'
|
42
|
+
version: '$1'
|
43
|
+
|
44
|
+
- regex: 'SubStream(?:/([\d\.]+))?'
|
45
|
+
name: 'SubStream'
|
46
|
+
version: '$1'
|
47
|
+
|
48
|
+
- regex: 'VLC(?:/([\d\.]+))?'
|
49
|
+
name: 'VLC'
|
50
|
+
version: '$1'
|
51
|
+
|
52
|
+
- regex: 'Windows-Media-Player(?:/(\d+[\.\d]+))?'
|
53
|
+
name: 'Windows Media Player'
|
54
|
+
version: '$1'
|
55
|
+
|
56
|
+
- regex: 'XBMC(?:/([\d\.]+))?'
|
57
|
+
name: 'XBMC'
|
58
|
+
version: '$1'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
###############
|
2
|
+
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
|
+
#
|
4
|
+
# @link http://piwik.org
|
5
|
+
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
|
+
###############
|
7
|
+
|
8
|
+
# AFNetworking generic
|
9
|
+
- regex: '([^/]+)/(\d+(?:\.\d+)+) \((?:iPhone|iPad); iOS [0-9\.]+; Scale/[0-9\.]+\)'
|
10
|
+
name: '$1'
|
11
|
+
version: '$2'
|
data/regexes/oss.yml
ADDED
@@ -0,0 +1,480 @@
|
|
1
|
+
###############
|
2
|
+
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
|
+
#
|
4
|
+
# @link http://piwik.org
|
5
|
+
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
|
+
###############
|
7
|
+
|
8
|
+
##########
|
9
|
+
# Tizen
|
10
|
+
##########
|
11
|
+
- regex: 'Tizen'
|
12
|
+
name: 'Tizen'
|
13
|
+
version: ''
|
14
|
+
|
15
|
+
##########
|
16
|
+
## Sailfish OS
|
17
|
+
###########
|
18
|
+
- regex: 'Sailfish|Jolla'
|
19
|
+
name: 'Sailfish OS'
|
20
|
+
version: ''
|
21
|
+
|
22
|
+
##########
|
23
|
+
# YunOS (Android based)
|
24
|
+
##########
|
25
|
+
- regex: '(?:Ali)?YunOS[ /]?(\d+[\.\d]+)?'
|
26
|
+
name: 'YunOS'
|
27
|
+
version: '$1'
|
28
|
+
|
29
|
+
##########
|
30
|
+
# Android
|
31
|
+
##########
|
32
|
+
- regex: '(?:Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]+)'
|
33
|
+
name: 'Android'
|
34
|
+
version: '$1'
|
35
|
+
|
36
|
+
|
37
|
+
- regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
|
38
|
+
name: 'Android'
|
39
|
+
version: ''
|
40
|
+
|
41
|
+
|
42
|
+
##########
|
43
|
+
# AmigaOS
|
44
|
+
##########
|
45
|
+
- regex: 'AmigaOS[ ]?(\d+[\.\d]+)'
|
46
|
+
name: 'AmigaOS'
|
47
|
+
version: '$1'
|
48
|
+
|
49
|
+
- regex: 'AmigaOS|AmigaVoyager|Amiga-AWeb'
|
50
|
+
name: 'AmigaOS'
|
51
|
+
version: ''
|
52
|
+
|
53
|
+
|
54
|
+
##########
|
55
|
+
# Linux
|
56
|
+
##########
|
57
|
+
- regex: 'Arch ?Linux(?:[ /\-](\d+[\.\d]+))?'
|
58
|
+
name: 'Arch Linux'
|
59
|
+
version: '$1'
|
60
|
+
|
61
|
+
- regex: 'VectorLinux(?: package)?(?:[ /\-](\d+[\.\d]+))?'
|
62
|
+
name: 'VectorLinux'
|
63
|
+
version: '$1'
|
64
|
+
|
65
|
+
- regex: 'Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\d+[\.\d]+)'
|
66
|
+
name: '$1'
|
67
|
+
version: '$2'
|
68
|
+
|
69
|
+
- regex: '(Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
|
70
|
+
name: '$1'
|
71
|
+
version: '$2'
|
72
|
+
|
73
|
+
# generic linux match -> end of file
|
74
|
+
|
75
|
+
##########
|
76
|
+
# Windows Mobile
|
77
|
+
##########
|
78
|
+
- regex: 'Windows Phone (?:OS)?[ ]?(\d+[\.\d]+)'
|
79
|
+
name: 'Windows Phone'
|
80
|
+
version: '$1'
|
81
|
+
|
82
|
+
|
83
|
+
- regex: 'XBLWP7|Windows Phone'
|
84
|
+
name: 'Windows Phone'
|
85
|
+
version: ''
|
86
|
+
|
87
|
+
- regex: 'Windows CE'
|
88
|
+
name: 'Windows CE'
|
89
|
+
version: ''
|
90
|
+
|
91
|
+
|
92
|
+
- regex: '(?:IEMobile|Windows Mobile)(?: (\d+[\.\d]+))?'
|
93
|
+
name: 'Windows Mobile'
|
94
|
+
version: '$1'
|
95
|
+
|
96
|
+
|
97
|
+
- regex: 'Windows NT 6.2; ARM;'
|
98
|
+
name: 'Windows RT'
|
99
|
+
version: ''
|
100
|
+
|
101
|
+
- regex: 'Windows NT 6.3; ARM;'
|
102
|
+
name: 'Windows RT 8.1'
|
103
|
+
version: ''
|
104
|
+
|
105
|
+
|
106
|
+
##########
|
107
|
+
# webOS
|
108
|
+
##########
|
109
|
+
- regex: '(?:webOS|Palm webOS)(?:/(\d+[\.\d]+))?'
|
110
|
+
name: 'webOS'
|
111
|
+
version: '$1'
|
112
|
+
|
113
|
+
- regex: '(?:PalmOS|Palm OS)(?:[/ ](\d+[\.\d]+))?|Palm'
|
114
|
+
name: 'palmOS'
|
115
|
+
version: '$1'
|
116
|
+
|
117
|
+
- regex: 'Xiino(?:.*v\. (\d+[\.\d]+))?' # palmOS only browser
|
118
|
+
name: 'palmOS'
|
119
|
+
version: '$1'
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
##########
|
124
|
+
# Windows
|
125
|
+
##########
|
126
|
+
- regex: 'CYGWIN_NT-10.0|Windows NT 10.0|Windows 10'
|
127
|
+
name: 'Windows 10'
|
128
|
+
version: '10'
|
129
|
+
|
130
|
+
- regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10'
|
131
|
+
name: 'Windows 10'
|
132
|
+
version: '10'
|
133
|
+
|
134
|
+
- regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
|
135
|
+
name: 'Windows 8.1'
|
136
|
+
version: '8.1'
|
137
|
+
|
138
|
+
|
139
|
+
- regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
|
140
|
+
name: 'Windows 8'
|
141
|
+
version: '8'
|
142
|
+
|
143
|
+
|
144
|
+
- regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7'
|
145
|
+
name: 'Windows 7'
|
146
|
+
version: '7'
|
147
|
+
|
148
|
+
|
149
|
+
- regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
|
150
|
+
name: 'Windows Vista'
|
151
|
+
version: 'Vista'
|
152
|
+
|
153
|
+
|
154
|
+
- regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
|
155
|
+
name: 'Windows Server 2003'
|
156
|
+
version: 'Server 2003'
|
157
|
+
|
158
|
+
|
159
|
+
- regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
|
160
|
+
name: 'Windows XP'
|
161
|
+
version: 'XP'
|
162
|
+
|
163
|
+
|
164
|
+
- regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
|
165
|
+
name: 'Windows 2000'
|
166
|
+
version: '2000'
|
167
|
+
|
168
|
+
|
169
|
+
- regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
|
170
|
+
name: 'Windows NT'
|
171
|
+
version: 'NT'
|
172
|
+
|
173
|
+
|
174
|
+
- regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
|
175
|
+
name: 'Windows ME'
|
176
|
+
version: 'ME'
|
177
|
+
|
178
|
+
|
179
|
+
- regex: 'CYGWIN_98-4.10|Win98|Windows 98'
|
180
|
+
name: 'Windows 98'
|
181
|
+
version: '98'
|
182
|
+
|
183
|
+
|
184
|
+
- regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
|
185
|
+
name: 'Windows 95'
|
186
|
+
version: '95'
|
187
|
+
|
188
|
+
|
189
|
+
- regex: 'Windows 3.1'
|
190
|
+
name: 'Windows 3.1'
|
191
|
+
version: '3.1'
|
192
|
+
|
193
|
+
|
194
|
+
- regex: 'Windows'
|
195
|
+
name: 'Windows'
|
196
|
+
version: ''
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
##########
|
201
|
+
# iOS
|
202
|
+
##########
|
203
|
+
- regex: '(?:CPU OS|iPhone OS|iOS)[ _](\d+(?:[_\.]\d+)*)'
|
204
|
+
name: 'iOS'
|
205
|
+
version: '$1'
|
206
|
+
|
207
|
+
- regex: '(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
208
|
+
name: 'iOS'
|
209
|
+
version: '$1'
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
##########
|
214
|
+
# Mac
|
215
|
+
##########
|
216
|
+
- regex: 'Mac OS X(?: (?:Version )?(\d+(?:[_\.]\d+)+))?'
|
217
|
+
name: 'Mac'
|
218
|
+
version: '$1'
|
219
|
+
|
220
|
+
- regex: 'Mac (\d+(?:[_\.]\d+)+)'
|
221
|
+
name: 'Mac'
|
222
|
+
version: '$1'
|
223
|
+
|
224
|
+
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC'
|
225
|
+
name: 'Mac'
|
226
|
+
version: ''
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
##########
|
231
|
+
# ChromeOS
|
232
|
+
##########
|
233
|
+
- regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)'
|
234
|
+
name: 'Chrome OS'
|
235
|
+
version: '$1'
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
##########
|
240
|
+
# BlackBerry
|
241
|
+
##########
|
242
|
+
- regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)'
|
243
|
+
name: 'BlackBerry OS'
|
244
|
+
version: '$1'
|
245
|
+
|
246
|
+
|
247
|
+
- regex: 'RIM Tablet OS (\d+[\.\d]+)'
|
248
|
+
name: 'BlackBerry Tablet OS'
|
249
|
+
version: '$1'
|
250
|
+
|
251
|
+
|
252
|
+
- regex: 'RIM Tablet OS|QNX|Play[Bb]ook'
|
253
|
+
name: 'BlackBerry Tablet OS'
|
254
|
+
version: ''
|
255
|
+
|
256
|
+
|
257
|
+
- regex: 'BlackBerry'
|
258
|
+
name: 'BlackBerry OS'
|
259
|
+
version: ''
|
260
|
+
|
261
|
+
|
262
|
+
##########
|
263
|
+
# Haiku OS
|
264
|
+
##########
|
265
|
+
- regex: 'Haiku'
|
266
|
+
name: 'Haiku OS'
|
267
|
+
version: ''
|
268
|
+
|
269
|
+
|
270
|
+
##########
|
271
|
+
# BeOS
|
272
|
+
##########
|
273
|
+
- regex: 'BeOS'
|
274
|
+
name: 'BeOS'
|
275
|
+
version: ''
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
##########
|
281
|
+
# Symbian
|
282
|
+
##########
|
283
|
+
- regex: 'Symbian/3.+NokiaBrowser/7\.3'
|
284
|
+
name: 'Symbian^3'
|
285
|
+
version: 'Anna'
|
286
|
+
|
287
|
+
|
288
|
+
- regex: 'Symbian/3.+NokiaBrowser/7\.4'
|
289
|
+
name: 'Symbian^3'
|
290
|
+
version: 'Belle'
|
291
|
+
|
292
|
+
|
293
|
+
- regex: 'Symbian/3'
|
294
|
+
name: 'Symbian^3'
|
295
|
+
version: ''
|
296
|
+
|
297
|
+
|
298
|
+
- regex: '(?:Series ?60|SymbOS|S60)(?:[ /]?(\d+[\.\d]+|V\d+))?'
|
299
|
+
name: 'Symbian OS Series 60'
|
300
|
+
version: '$1'
|
301
|
+
|
302
|
+
|
303
|
+
- regex: 'Series40'
|
304
|
+
name: 'Symbian OS Series 40'
|
305
|
+
version: ''
|
306
|
+
|
307
|
+
|
308
|
+
- regex: 'SymbianOS/(\d+[\.\d]+)'
|
309
|
+
name: 'Symbian OS'
|
310
|
+
version: '$1'
|
311
|
+
|
312
|
+
|
313
|
+
- regex: 'MeeGo|WeTab'
|
314
|
+
name: 'MeeGo'
|
315
|
+
version: ''
|
316
|
+
|
317
|
+
|
318
|
+
- regex: 'Symbian OS|SymbOS'
|
319
|
+
name: 'Symbian OS'
|
320
|
+
version: ''
|
321
|
+
|
322
|
+
|
323
|
+
- regex: 'Nokia'
|
324
|
+
name: 'Symbian'
|
325
|
+
version: ''
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
##########
|
330
|
+
# Firefox OS
|
331
|
+
##########
|
332
|
+
- regex: '(?:Mobile|Tablet);.+Firefox/\d+\.\d+'
|
333
|
+
name: 'Firefox OS'
|
334
|
+
version: ''
|
335
|
+
|
336
|
+
|
337
|
+
##########
|
338
|
+
# RISC OS
|
339
|
+
##########
|
340
|
+
- regex: 'RISC OS(?:-NC)?(?:[ /](\d+[\.\d]+))?'
|
341
|
+
name: 'RISC OS'
|
342
|
+
version: '$1'
|
343
|
+
|
344
|
+
|
345
|
+
##########
|
346
|
+
# Inferno
|
347
|
+
##########
|
348
|
+
- regex: 'Inferno(?:[ /](\d+[\.\d]+))?'
|
349
|
+
name: 'Inferno'
|
350
|
+
version: '$1'
|
351
|
+
|
352
|
+
|
353
|
+
##########
|
354
|
+
# Bada
|
355
|
+
##########
|
356
|
+
- regex: 'bada(?:[ /](\d+[\.\d]+))'
|
357
|
+
name: 'Bada'
|
358
|
+
version: '$1'
|
359
|
+
|
360
|
+
|
361
|
+
- regex: 'bada'
|
362
|
+
name: 'Bada'
|
363
|
+
version: ''
|
364
|
+
|
365
|
+
|
366
|
+
##########
|
367
|
+
# Brew
|
368
|
+
##########
|
369
|
+
- regex: '(?:Brew MP|BREW|BMP)(?:[ /](\d+[\.\d]+))'
|
370
|
+
name: 'Brew'
|
371
|
+
version: '$1'
|
372
|
+
|
373
|
+
|
374
|
+
- regex: 'Brew MP|BREW|BMP'
|
375
|
+
name: 'Brew'
|
376
|
+
version: ''
|
377
|
+
|
378
|
+
|
379
|
+
##########
|
380
|
+
# Web TV
|
381
|
+
##########
|
382
|
+
- regex: 'GoogleTV(?:[ /](\d+[\.\d]+))?'
|
383
|
+
name: 'Google TV'
|
384
|
+
version: '$1'
|
385
|
+
|
386
|
+
|
387
|
+
- regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
|
388
|
+
name: 'Apple TV'
|
389
|
+
version: '$1'
|
390
|
+
|
391
|
+
|
392
|
+
- regex: 'WebTV/(\d+[\.\d]+)'
|
393
|
+
name: 'WebTV'
|
394
|
+
version: '$1'
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
##########
|
399
|
+
# Unix
|
400
|
+
##########
|
401
|
+
- regex: '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?'
|
402
|
+
name: 'Solaris'
|
403
|
+
version: '$1'
|
404
|
+
|
405
|
+
- regex: 'AIX(?:[/ ]?(\d+[\.\d]+))?'
|
406
|
+
name: 'AIX'
|
407
|
+
version: '$1'
|
408
|
+
|
409
|
+
- regex: 'HP-UX(?:[/ ]?(\d+[\.\d]+))?'
|
410
|
+
name: 'HP-UX'
|
411
|
+
version: '$1'
|
412
|
+
|
413
|
+
- regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?'
|
414
|
+
name: 'FreeBSD'
|
415
|
+
version: '$1'
|
416
|
+
|
417
|
+
- regex: 'NetBSD(?:[/ ]?(\d+[\.\d]+))?'
|
418
|
+
name: 'NetBSD'
|
419
|
+
version: '$1'
|
420
|
+
|
421
|
+
- regex: 'OpenBSD(?:[/ ]?(\d+[\.\d]+))?'
|
422
|
+
name: 'OpenBSD'
|
423
|
+
version: '$1'
|
424
|
+
|
425
|
+
- regex: 'DragonFly(?:[/ ]?(\d+[\.\d]+))?'
|
426
|
+
name: 'DragonFly'
|
427
|
+
version: '$1'
|
428
|
+
|
429
|
+
- regex: 'Syllable(?:[/ ]?(\d+[\.\d]+))?'
|
430
|
+
name: 'Syllable'
|
431
|
+
version: '$1'
|
432
|
+
|
433
|
+
- regex: 'IRIX(?:[/ ]?(\d+[\.\d]+))'
|
434
|
+
name: 'IRIX'
|
435
|
+
version: '$1'
|
436
|
+
|
437
|
+
- regex: 'OSF1(?:[/ ]?v?(\d+[\.\d]+))?'
|
438
|
+
name: 'OSF1'
|
439
|
+
version: '$1'
|
440
|
+
|
441
|
+
##########
|
442
|
+
# Gaming Console
|
443
|
+
##########
|
444
|
+
- regex: 'Nintendo Wii'
|
445
|
+
name: 'Nintendo'
|
446
|
+
version: 'Wii'
|
447
|
+
|
448
|
+
- regex: 'PlayStation ?([3|4])'
|
449
|
+
name: 'PlayStation'
|
450
|
+
version: '$1'
|
451
|
+
|
452
|
+
- regex: 'Xbox|KIN\.(?:One|Two)'
|
453
|
+
name: 'Xbox'
|
454
|
+
version: '360'
|
455
|
+
|
456
|
+
##########
|
457
|
+
# Mobile Gaming Console
|
458
|
+
##########
|
459
|
+
- regex: 'Nitro|Nintendo ([3]?DS[i]?)'
|
460
|
+
name: 'Nintendo Mobile'
|
461
|
+
version: '$1'
|
462
|
+
|
463
|
+
- regex: 'PlayStation ((?:Portable|Vita))'
|
464
|
+
name: 'PlayStation Portable'
|
465
|
+
version: '$1'
|
466
|
+
|
467
|
+
##########
|
468
|
+
# IBM
|
469
|
+
##########
|
470
|
+
- regex: 'OS/2'
|
471
|
+
name: 'OS/2'
|
472
|
+
version: ''
|
473
|
+
|
474
|
+
###########
|
475
|
+
# Linux (Generic)
|
476
|
+
###########
|
477
|
+
- regex: 'Linux[^a-z]'
|
478
|
+
name: 'GNU/Linux'
|
479
|
+
version: ''
|
480
|
+
|