File Coverage

blib/lib/Woothee/DataSet.pm
Criterion Covered Total %
statement 18 18 100.0
branch 2 4 50.0
condition n/a
subroutine 6 6 100.0
pod 0 2 0.0
total 26 30 86.6


line stmt bran cond sub pod time code
1             package Woothee::DataSet;
2              
3 7     7   65472 use strict;
  7         25  
  7         195  
4 7     7   31 use warnings;
  7         14  
  7         148  
5 7     7   35 use Carp;
  7         24  
  7         723  
6              
7             our (@ISA, @EXPORT_OK);
8             BEGIN {
9 7     7   50 require Exporter;
10 7         114 our @ISA = qw(Exporter);
11 7         17609 our @EXPORT_OK = qw(dataset const);
12             }
13              
14             my $CONST = {
15             KEY_LABEL => "label",
16             KEY_NAME => "name",
17             KEY_TYPE => "type",
18             KEY_CATEGORY => "category",
19             KEY_OS => "os",
20             KEY_OS_VERSION => "os_version",
21             KEY_VENDOR => "vendor",
22             KEY_VERSION => "version",
23              
24             TYPE_BROWSER => "browser",
25             TYPE_OS => "os",
26             TYPE_FULL => "full",
27              
28             CATEGORY_PC => "pc",
29             CATEGORY_SMARTPHONE => "smartphone",
30             CATEGORY_MOBILEPHONE => "mobilephone",
31             CATEGORY_CRAWLER => "crawler",
32             CATEGORY_APPLIANCE => "appliance",
33             CATEGORY_MISC => "misc",
34              
35             ATTRIBUTE_NAME => "name",
36             ATTRIBUTE_CATEGORY => "category",
37             ATTRIBUTE_OS => "os",
38             ATTRIBUTE_OS_VERSION => "os_version",
39             ATTRIBUTE_VENDOR => "vendor",
40             ATTRIBUTE_VERSION => "version",
41              
42             VALUE_UNKNOWN => "UNKNOWN",
43              
44             CATEGORY_LIST => ["pc", "smartphone", "mobilephone", "crawler", "appliance", "misc", "UNKNOWN"],
45             ATTRIBUTE_LIST => ["name", "category", "os", "vendor", "version"],
46             };
47              
48             sub const {
49 18600     18600 0 31912 my ($klass, $const_name) = @_;
50 18600 50       28637 $const_name = $klass unless $const_name;
51 18600         52006 $CONST->{$const_name};
52             }
53              
54             my $DATASET = {};
55             {
56             # GENERATED from dataset.yaml at Thu Apr 11 18:00:59 JST 2019 by tagomoris
57             my $obj;
58             $obj = {label => 'MSIE', name => 'Internet Explorer', type => 'browser'};
59             $obj->{vendor} = 'Microsoft';
60             $DATASET->{'MSIE'} = $obj;
61             $obj = {label => 'Edge', name => 'Edge', type => 'browser'};
62             $obj->{vendor} = 'Microsoft';
63             $DATASET->{'Edge'} = $obj;
64             $obj = {label => 'Chrome', name => 'Chrome', type => 'browser'};
65             $obj->{vendor} = 'Google';
66             $DATASET->{'Chrome'} = $obj;
67             $obj = {label => 'Safari', name => 'Safari', type => 'browser'};
68             $obj->{vendor} = 'Apple';
69             $DATASET->{'Safari'} = $obj;
70             $obj = {label => 'Firefox', name => 'Firefox', type => 'browser'};
71             $obj->{vendor} = 'Mozilla';
72             $DATASET->{'Firefox'} = $obj;
73             $obj = {label => 'Opera', name => 'Opera', type => 'browser'};
74             $obj->{vendor} = 'Opera';
75             $DATASET->{'Opera'} = $obj;
76             $obj = {label => 'Vivaldi', name => 'Vivaldi', type => 'browser'};
77             $obj->{vendor} = 'Vivaldi Technologies';
78             $DATASET->{'Vivaldi'} = $obj;
79             $obj = {label => 'Sleipnir', name => 'Sleipnir', type => 'browser'};
80             $obj->{vendor} = 'Fenrir Inc.';
81             $DATASET->{'Sleipnir'} = $obj;
82             $obj = {label => 'Webview', name => 'Webview', type => 'browser'};
83             $obj->{vendor} = 'OS vendor';
84             $DATASET->{'Webview'} = $obj;
85             $obj = {label => 'YaBrowser', name => 'Yandex Browser', type => 'browser'};
86             $obj->{vendor} = 'Yandex';
87             $DATASET->{'YaBrowser'} = $obj;
88             $obj = {label => 'Win', name => 'Windows UNKNOWN Ver', type => 'os'};
89             $obj->{category} = 'pc';
90             $DATASET->{'Win'} = $obj;
91             $obj = {label => 'Win10', name => 'Windows 10', type => 'os'};
92             $obj->{category} = 'pc';
93             $DATASET->{'Win10'} = $obj;
94             $obj = {label => 'Win8.1', name => 'Windows 8.1', type => 'os'};
95             $obj->{category} = 'pc';
96             $DATASET->{'Win8.1'} = $obj;
97             $obj = {label => 'Win8', name => 'Windows 8', type => 'os'};
98             $obj->{category} = 'pc';
99             $DATASET->{'Win8'} = $obj;
100             $obj = {label => 'Win7', name => 'Windows 7', type => 'os'};
101             $obj->{category} = 'pc';
102             $DATASET->{'Win7'} = $obj;
103             $obj = {label => 'WinVista', name => 'Windows Vista', type => 'os'};
104             $obj->{category} = 'pc';
105             $DATASET->{'WinVista'} = $obj;
106             $obj = {label => 'WinXP', name => 'Windows XP', type => 'os'};
107             $obj->{category} = 'pc';
108             $DATASET->{'WinXP'} = $obj;
109             $obj = {label => 'Win2000', name => 'Windows 2000', type => 'os'};
110             $obj->{category} = 'pc';
111             $DATASET->{'Win2000'} = $obj;
112             $obj = {label => 'WinNT4', name => 'Windows NT 4.0', type => 'os'};
113             $obj->{category} = 'pc';
114             $DATASET->{'WinNT4'} = $obj;
115             $obj = {label => 'WinMe', name => 'Windows Me', type => 'os'};
116             $obj->{category} = 'pc';
117             $DATASET->{'WinMe'} = $obj;
118             $obj = {label => 'Win98', name => 'Windows 98', type => 'os'};
119             $obj->{category} = 'pc';
120             $DATASET->{'Win98'} = $obj;
121             $obj = {label => 'Win95', name => 'Windows 95', type => 'os'};
122             $obj->{category} = 'pc';
123             $DATASET->{'Win95'} = $obj;
124             $obj = {label => 'WinPhone', name => 'Windows Phone OS', type => 'os'};
125             $obj->{category} = 'smartphone';
126             $DATASET->{'WinPhone'} = $obj;
127             $obj = {label => 'WinCE', name => 'Windows CE', type => 'os'};
128             $obj->{category} = 'smartphone';
129             $DATASET->{'WinCE'} = $obj;
130             $obj = {label => 'OSX', name => 'Mac OSX', type => 'os'};
131             $obj->{category} = 'pc';
132             $DATASET->{'OSX'} = $obj;
133             $obj = {label => 'MacOS', name => 'Mac OS Classic', type => 'os'};
134             $obj->{category} = 'pc';
135             $DATASET->{'MacOS'} = $obj;
136             $obj = {label => 'Linux', name => 'Linux', type => 'os'};
137             $obj->{category} = 'pc';
138             $DATASET->{'Linux'} = $obj;
139             $obj = {label => 'BSD', name => 'BSD', type => 'os'};
140             $obj->{category} = 'pc';
141             $DATASET->{'BSD'} = $obj;
142             $obj = {label => 'ChromeOS', name => 'ChromeOS', type => 'os'};
143             $obj->{category} = 'pc';
144             $DATASET->{'ChromeOS'} = $obj;
145             $obj = {label => 'Android', name => 'Android', type => 'os'};
146             $obj->{category} = 'smartphone';
147             $DATASET->{'Android'} = $obj;
148             $obj = {label => 'iPhone', name => 'iPhone', type => 'os'};
149             $obj->{category} = 'smartphone';
150             $DATASET->{'iPhone'} = $obj;
151             $obj = {label => 'iPad', name => 'iPad', type => 'os'};
152             $obj->{category} = 'smartphone';
153             $DATASET->{'iPad'} = $obj;
154             $obj = {label => 'iPod', name => 'iPod', type => 'os'};
155             $obj->{category} = 'smartphone';
156             $DATASET->{'iPod'} = $obj;
157             $obj = {label => 'iOS', name => 'iOS', type => 'os'};
158             $obj->{category} = 'smartphone';
159             $DATASET->{'iOS'} = $obj;
160             $obj = {label => 'FirefoxOS', name => 'Firefox OS', type => 'os'};
161             $obj->{category} = 'smartphone';
162             $DATASET->{'FirefoxOS'} = $obj;
163             $obj = {label => 'BlackBerry', name => 'BlackBerry', type => 'os'};
164             $obj->{category} = 'smartphone';
165             $DATASET->{'BlackBerry'} = $obj;
166             $obj = {label => 'BlackBerry10', name => 'BlackBerry 10', type => 'os'};
167             $obj->{category} = 'smartphone';
168             $DATASET->{'BlackBerry10'} = $obj;
169             $obj = {label => 'docomo', name => 'docomo', type => 'full'};
170             $obj->{category} = 'mobilephone';
171             $obj->{vendor} = 'docomo';
172             $obj->{os} = 'docomo';
173             $DATASET->{'docomo'} = $obj;
174             $obj = {label => 'au', name => 'au by KDDI', type => 'full'};
175             $obj->{category} = 'mobilephone';
176             $obj->{vendor} = 'au';
177             $obj->{os} = 'au';
178             $DATASET->{'au'} = $obj;
179             $obj = {label => 'SoftBank', name => 'SoftBank Mobile', type => 'full'};
180             $obj->{category} = 'mobilephone';
181             $obj->{vendor} = 'SoftBank';
182             $obj->{os} = 'SoftBank';
183             $DATASET->{'SoftBank'} = $obj;
184             $obj = {label => 'willcom', name => 'WILLCOM', type => 'full'};
185             $obj->{category} = 'mobilephone';
186             $obj->{vendor} = 'WILLCOM';
187             $obj->{os} = 'WILLCOM';
188             $DATASET->{'willcom'} = $obj;
189             $obj = {label => 'jig', name => 'jig browser', type => 'full'};
190             $obj->{category} = 'mobilephone';
191             $obj->{vendor} = '';
192             $obj->{os} = 'jig';
193             $DATASET->{'jig'} = $obj;
194             $obj = {label => 'emobile', name => 'emobile', type => 'full'};
195             $obj->{category} = 'mobilephone';
196             $obj->{vendor} = '';
197             $obj->{os} = 'emobile';
198             $DATASET->{'emobile'} = $obj;
199             $obj = {label => 'SymbianOS', name => 'SymbianOS', type => 'full'};
200             $obj->{category} = 'mobilephone';
201             $obj->{vendor} = '';
202             $obj->{os} = 'SymbianOS';
203             $DATASET->{'SymbianOS'} = $obj;
204             $obj = {label => 'MobileTranscoder', name => 'Mobile Transcoder', type => 'full'};
205             $obj->{category} = 'mobilephone';
206             $obj->{vendor} = '';
207             $obj->{os} = 'Mobile Transcoder';
208             $DATASET->{'MobileTranscoder'} = $obj;
209             $obj = {label => 'Nintendo3DS', name => 'Nintendo 3DS', type => 'full'};
210             $obj->{category} = 'appliance';
211             $obj->{vendor} = 'Nintendo';
212             $obj->{os} = 'Nintendo 3DS';
213             $DATASET->{'Nintendo3DS'} = $obj;
214             $obj = {label => 'NintendoDSi', name => 'Nintendo DSi', type => 'full'};
215             $obj->{category} = 'appliance';
216             $obj->{vendor} = 'Nintendo';
217             $obj->{os} = 'Nintendo DSi';
218             $DATASET->{'NintendoDSi'} = $obj;
219             $obj = {label => 'NintendoWii', name => 'Nintendo Wii', type => 'full'};
220             $obj->{category} = 'appliance';
221             $obj->{vendor} = 'Nintendo';
222             $obj->{os} = 'Nintendo Wii';
223             $DATASET->{'NintendoWii'} = $obj;
224             $obj = {label => 'NintendoWiiU', name => 'Nintendo Wii U', type => 'full'};
225             $obj->{category} = 'appliance';
226             $obj->{vendor} = 'Nintendo';
227             $obj->{os} = 'Nintendo Wii U';
228             $DATASET->{'NintendoWiiU'} = $obj;
229             $obj = {label => 'PSP', name => 'PlayStation Portable', type => 'full'};
230             $obj->{category} = 'appliance';
231             $obj->{vendor} = 'Sony';
232             $obj->{os} = 'PlayStation Portable';
233             $DATASET->{'PSP'} = $obj;
234             $obj = {label => 'PSVita', name => 'PlayStation Vita', type => 'full'};
235             $obj->{category} = 'appliance';
236             $obj->{vendor} = 'Sony';
237             $obj->{os} = 'PlayStation Vita';
238             $DATASET->{'PSVita'} = $obj;
239             $obj = {label => 'PS3', name => 'PlayStation 3', type => 'full'};
240             $obj->{category} = 'appliance';
241             $obj->{vendor} = 'Sony';
242             $obj->{os} = 'PlayStation 3';
243             $DATASET->{'PS3'} = $obj;
244             $obj = {label => 'PS4', name => 'PlayStation 4', type => 'full'};
245             $obj->{category} = 'appliance';
246             $obj->{vendor} = 'Sony';
247             $obj->{os} = 'PlayStation 4';
248             $DATASET->{'PS4'} = $obj;
249             $obj = {label => 'Xbox360', name => 'Xbox 360', type => 'full'};
250             $obj->{category} = 'appliance';
251             $obj->{vendor} = 'Microsoft';
252             $obj->{os} = 'Xbox 360';
253             $DATASET->{'Xbox360'} = $obj;
254             $obj = {label => 'XboxOne', name => 'Xbox One', type => 'full'};
255             $obj->{category} = 'appliance';
256             $obj->{vendor} = 'Microsoft';
257             $obj->{os} = 'Xbox One';
258             $DATASET->{'XboxOne'} = $obj;
259             $obj = {label => 'DigitalTV', name => 'InternetTVBrowser', type => 'full'};
260             $obj->{category} = 'appliance';
261             $obj->{vendor} = '';
262             $obj->{os} = 'DigitalTV';
263             $DATASET->{'DigitalTV'} = $obj;
264             $obj = {label => 'SafariRSSReader', name => 'Safari RSSReader', type => 'full'};
265             $obj->{category} = 'misc';
266             $obj->{vendor} = 'Apple';
267             $DATASET->{'SafariRSSReader'} = $obj;
268             $obj = {label => 'GoogleDesktop', name => 'Google Desktop', type => 'full'};
269             $obj->{category} = 'misc';
270             $obj->{vendor} = 'Google';
271             $DATASET->{'GoogleDesktop'} = $obj;
272             $obj = {label => 'WindowsRSSReader', name => 'Windows RSSReader', type => 'full'};
273             $obj->{category} = 'misc';
274             $obj->{vendor} = 'Microsoft';
275             $DATASET->{'WindowsRSSReader'} = $obj;
276             $obj = {label => 'VariousRSSReader', name => 'RSSReader', type => 'full'};
277             $obj->{category} = 'misc';
278             $obj->{vendor} = '';
279             $DATASET->{'VariousRSSReader'} = $obj;
280             $obj = {label => 'HTTPLibrary', name => 'HTTP Library', type => 'full'};
281             $obj->{category} = 'misc';
282             $obj->{vendor} = '';
283             $DATASET->{'HTTPLibrary'} = $obj;
284             $obj = {label => 'GoogleBot', name => 'Googlebot', type => 'full'};
285             $obj->{category} = 'crawler';
286             $obj->{vendor} = '';
287             $DATASET->{'GoogleBot'} = $obj;
288             $obj = {label => 'GoogleBotMobile', name => 'Googlebot Mobile', type => 'full'};
289             $obj->{category} = 'crawler';
290             $obj->{vendor} = '';
291             $DATASET->{'GoogleBotMobile'} = $obj;
292             $obj = {label => 'GoogleMediaPartners', name => 'Google Mediapartners', type => 'full'};
293             $obj->{category} = 'crawler';
294             $obj->{vendor} = '';
295             $DATASET->{'GoogleMediaPartners'} = $obj;
296             $obj = {label => 'GoogleFeedFetcher', name => 'Google Feedfetcher', type => 'full'};
297             $obj->{category} = 'crawler';
298             $obj->{vendor} = '';
299             $DATASET->{'GoogleFeedFetcher'} = $obj;
300             $obj = {label => 'GoogleAppEngine', name => 'Google AppEngine', type => 'full'};
301             $obj->{category} = 'crawler';
302             $obj->{vendor} = '';
303             $DATASET->{'GoogleAppEngine'} = $obj;
304             $obj = {label => 'GoogleWebPreview', name => 'Google Web Preview', type => 'full'};
305             $obj->{category} = 'crawler';
306             $obj->{vendor} = '';
307             $DATASET->{'GoogleWebPreview'} = $obj;
308             $obj = {label => 'YahooSlurp', name => 'Yahoo! Slurp', type => 'full'};
309             $obj->{category} = 'crawler';
310             $obj->{vendor} = '';
311             $DATASET->{'YahooSlurp'} = $obj;
312             $obj = {label => 'YahooJP', name => 'Yahoo! Japan', type => 'full'};
313             $obj->{category} = 'crawler';
314             $obj->{vendor} = '';
315             $DATASET->{'YahooJP'} = $obj;
316             $obj = {label => 'YahooPipes', name => 'Yahoo! Pipes', type => 'full'};
317             $obj->{category} = 'crawler';
318             $obj->{vendor} = '';
319             $DATASET->{'YahooPipes'} = $obj;
320             $obj = {label => 'Baiduspider', name => 'Baiduspider', type => 'full'};
321             $obj->{category} = 'crawler';
322             $obj->{vendor} = '';
323             $DATASET->{'Baiduspider'} = $obj;
324             $obj = {label => 'msnbot', name => 'msnbot', type => 'full'};
325             $obj->{category} = 'crawler';
326             $obj->{vendor} = '';
327             $DATASET->{'msnbot'} = $obj;
328             $obj = {label => 'bingbot', name => 'bingbot', type => 'full'};
329             $obj->{category} = 'crawler';
330             $obj->{vendor} = '';
331             $DATASET->{'bingbot'} = $obj;
332             $obj = {label => 'BingPreview', name => 'BingPreview', type => 'full'};
333             $obj->{category} = 'crawler';
334             $obj->{vendor} = '';
335             $DATASET->{'BingPreview'} = $obj;
336             $obj = {label => 'Yeti', name => 'Naver Yeti', type => 'full'};
337             $obj->{category} = 'crawler';
338             $obj->{vendor} = '';
339             $DATASET->{'Yeti'} = $obj;
340             $obj = {label => 'FeedBurner', name => 'Google FeedBurner', type => 'full'};
341             $obj->{category} = 'crawler';
342             $obj->{vendor} = '';
343             $DATASET->{'FeedBurner'} = $obj;
344             $obj = {label => 'facebook', name => 'facebook', type => 'full'};
345             $obj->{category} = 'crawler';
346             $obj->{vendor} = '';
347             $DATASET->{'facebook'} = $obj;
348             $obj = {label => 'twitter', name => 'twitter', type => 'full'};
349             $obj->{category} = 'crawler';
350             $obj->{vendor} = '';
351             $DATASET->{'twitter'} = $obj;
352             $obj = {label => 'trendictionbot', name => 'trendiction', type => 'full'};
353             $obj->{category} = 'crawler';
354             $obj->{vendor} = '';
355             $DATASET->{'trendictionbot'} = $obj;
356             $obj = {label => 'mixi', name => 'mixi', type => 'full'};
357             $obj->{category} = 'crawler';
358             $obj->{vendor} = '';
359             $DATASET->{'mixi'} = $obj;
360             $obj = {label => 'IndyLibrary', name => 'Indy Library', type => 'full'};
361             $obj->{category} = 'crawler';
362             $obj->{vendor} = '';
363             $DATASET->{'IndyLibrary'} = $obj;
364             $obj = {label => 'ApplePubSub', name => 'Apple iCloud', type => 'full'};
365             $obj->{category} = 'crawler';
366             $obj->{vendor} = '';
367             $DATASET->{'ApplePubSub'} = $obj;
368             $obj = {label => 'Genieo', name => 'Genieo Web Filter', type => 'full'};
369             $obj->{category} = 'crawler';
370             $obj->{vendor} = '';
371             $DATASET->{'Genieo'} = $obj;
372             $obj = {label => 'topsyButterfly', name => 'topsy Butterfly', type => 'full'};
373             $obj->{category} = 'crawler';
374             $obj->{vendor} = '';
375             $DATASET->{'topsyButterfly'} = $obj;
376             $obj = {label => 'rogerbot', name => 'SeoMoz rogerbot', type => 'full'};
377             $obj->{category} = 'crawler';
378             $obj->{vendor} = '';
379             $DATASET->{'rogerbot'} = $obj;
380             $obj = {label => 'AhrefsBot', name => 'ahref AhrefsBot', type => 'full'};
381             $obj->{category} = 'crawler';
382             $obj->{vendor} = '';
383             $DATASET->{'AhrefsBot'} = $obj;
384             $obj = {label => 'radian6', name => 'salesforce radian6', type => 'full'};
385             $obj->{category} = 'crawler';
386             $obj->{vendor} = '';
387             $DATASET->{'radian6'} = $obj;
388             $obj = {label => 'Hatena', name => 'Hatena', type => 'full'};
389             $obj->{category} = 'crawler';
390             $obj->{vendor} = '';
391             $DATASET->{'Hatena'} = $obj;
392             $obj = {label => 'goo', name => 'goo', type => 'full'};
393             $obj->{category} = 'crawler';
394             $obj->{vendor} = '';
395             $DATASET->{'goo'} = $obj;
396             $obj = {label => 'livedoorFeedFetcher', name => 'livedoor FeedFetcher', type => 'full'};
397             $obj->{category} = 'crawler';
398             $obj->{vendor} = '';
399             $DATASET->{'livedoorFeedFetcher'} = $obj;
400             $obj = {label => 'VariousCrawler', name => 'misc crawler', type => 'full'};
401             $obj->{category} = 'crawler';
402             $obj->{vendor} = '';
403             $DATASET->{'VariousCrawler'} = $obj;
404             }
405              
406             sub dataset {
407 1330     1330 0 4932 my ($klass, $label) = @_;
408 1330 50       2695 $label = $klass unless $label;
409 1330         4551 $DATASET->{$label};
410             }
411              
412             1;
413             __END__