line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
3
|
|
|
3
|
|
29233
|
use strict; |
|
3
|
|
|
|
|
4
|
|
|
3
|
|
|
|
|
79
|
|
2
|
3
|
|
|
3
|
|
12
|
use warnings; |
|
3
|
|
|
|
|
3
|
|
|
3
|
|
|
|
|
140
|
|
3
|
|
|
|
|
|
|
package Acme::CPANAuthors::Nonhuman; # git description: v0.024-4-gb0c43eb |
4
|
|
|
|
|
|
|
# vim: set ts=8 sts=4 sw=4 tw=115 et : |
5
|
|
|
|
|
|
|
# ABSTRACT: We are non-human CPAN authors |
6
|
|
|
|
|
|
|
# KEYWORDS: acmeism cpan authors animals fun |
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
our $VERSION = '0.025'; |
9
|
|
|
|
|
|
|
|
10
|
3
|
|
|
3
|
|
1399
|
use utf8; |
|
3
|
|
|
|
|
24
|
|
|
3
|
|
|
|
|
13
|
|
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
# this data was generated at build time via __DATA__ section |
13
|
|
|
|
|
|
|
# and Dist::Zilla::Plugin::MungeFile::WithDataSection 0.009 |
14
|
|
|
|
|
|
|
my %authors = ( |
15
|
|
|
|
|
|
|
ETHER => 'Karen Etheridge', |
16
|
|
|
|
|
|
|
VOJ => 'Jakob Voß', |
17
|
|
|
|
|
|
|
IVANWILLS => 'Ivan Wills', |
18
|
|
|
|
|
|
|
MITHALDU => 'Christian Walde', |
19
|
|
|
|
|
|
|
DOLMEN => 'Olivier Mengué', |
20
|
|
|
|
|
|
|
ZDM => 'Dmytro Zagashev', |
21
|
|
|
|
|
|
|
ALTREUS => 'Alastair McGowan-Douglas', |
22
|
|
|
|
|
|
|
HIROSE => 'HIROSE Masaaki', |
23
|
|
|
|
|
|
|
KAARE => 'Kaare Rasmussen', |
24
|
|
|
|
|
|
|
AKXLIX => 'azuma, kuniyuki', |
25
|
|
|
|
|
|
|
BBAXTER => 'Brad Baxter', |
26
|
|
|
|
|
|
|
ABERNDT => 'Alan Berndt', |
27
|
|
|
|
|
|
|
ARUNBEAR => 'Arun Prasaad', |
28
|
|
|
|
|
|
|
IANKENT => 'Ian Kent', |
29
|
|
|
|
|
|
|
JTRAMMELL => 'John J. Trammell', |
30
|
|
|
|
|
|
|
SIMCOP => 'Ryan Voots', |
31
|
|
|
|
|
|
|
CARLOS => 'Carlos Lima', |
32
|
|
|
|
|
|
|
FGA => 'Fabrice Gabolde', |
33
|
|
|
|
|
|
|
SKINGTON => 'Sam Kington', |
34
|
|
|
|
|
|
|
AKIHITO => 'Akihito Takeda', |
35
|
|
|
|
|
|
|
GLEACH => 'Geoffrey Leach', |
36
|
|
|
|
|
|
|
MAXS => 'Maxime Soulé', |
37
|
|
|
|
|
|
|
ARUN => 'Arun Venkataraman', |
38
|
|
|
|
|
|
|
CKRAS => 'Christiaan Kras', |
39
|
|
|
|
|
|
|
EAST => 'Robert Ginko', |
40
|
|
|
|
|
|
|
INFRARED => 'Michael Kroher', |
41
|
|
|
|
|
|
|
NMELNICK => 'Nicholas Melnick', |
42
|
|
|
|
|
|
|
BAHOOTYPR => 'Bahootyper', |
43
|
|
|
|
|
|
|
BENW => 'Ben Wilber', |
44
|
|
|
|
|
|
|
BIGREDS => 'Avi Greenbury', |
45
|
|
|
|
|
|
|
DAIBA => '台場 圭一', |
46
|
|
|
|
|
|
|
EUGENEK => 'Eugene Kuzin', |
47
|
|
|
|
|
|
|
ROBMAN => 'Rob Manson', |
48
|
|
|
|
|
|
|
GAURAV => 'Gaurav Vaidya', |
49
|
|
|
|
|
|
|
ORCHEW => 'Cooper Vertz', |
50
|
|
|
|
|
|
|
PERLPIE => 'perlpie', |
51
|
|
|
|
|
|
|
SZARATE => 'Santiago Zarate', |
52
|
|
|
|
|
|
|
ZHDA => 'Denis Zhdanov', |
53
|
|
|
|
|
|
|
); |
54
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
my %avatar_urls = ( |
56
|
|
|
|
|
|
|
ETHER => 'https://secure.gravatar.com/avatar/bdc5cd06679e732e262f6c1b450a0237?s=80&d=identicon', |
57
|
|
|
|
|
|
|
VOJ => 'http://www.gravatar.com/avatar/9827ddb7c8cb132375cf55bf7e624250?s=80&d=http%3A%2F%2Fwww.gravatar.com%2Favatar%2Fdcad11c6680a6c59cc31d2bf1b3975e5%3Fs%3D130%26d%3Didenticon', |
58
|
|
|
|
|
|
|
IVANWILLS => 'https://secure.gravatar.com/avatar/c668586858d59a94f3eb761903175f27?s=80&d=identicon', |
59
|
|
|
|
|
|
|
MITHALDU => 'https://secure.gravatar.com/avatar/d9c28af939032ab0c30fd7be8fdc1040?s=80&d=identicon', |
60
|
|
|
|
|
|
|
DOLMEN => 'https://secure.gravatar.com/avatar/70d9b050bfe39350c234d710fadfcd39?s=80', |
61
|
|
|
|
|
|
|
ZDM => 'https://secure.gravatar.com/avatar/f99956427457624457d0b626f492747d.png', |
62
|
|
|
|
|
|
|
ALTREUS => 'https://s.gravatar.com/avatar/f6ff3f40f3b6fdf036bff73832357634?s=80', |
63
|
|
|
|
|
|
|
HIROSE => 'https://secure.gravatar.com/avatar/9fdc92e131d7950e81895ca892b7a384?s=80&d=identicon', |
64
|
|
|
|
|
|
|
KAARE => 'https://secure.gravatar.com/avatar/4981bb322567b621afe038246f4dce1a?s=80&d=identicon', |
65
|
|
|
|
|
|
|
AKXLIX => 'https://secure.gravatar.com/avatar/22376afdd53ef1adc944c7168349cd8d?s=80&d=identicon', |
66
|
|
|
|
|
|
|
BBAXTER => 'https://secure.gravatar.com/avatar/af7986efb2374332f4babfaaef3b55d4?s=80&d=identicon', |
67
|
|
|
|
|
|
|
ABERNDT => 'https://secure.gravatar.com/avatar/888b4060c4844235ed6897de4946f9dd?s=80&d=identicon', |
68
|
|
|
|
|
|
|
ARUNBEAR => 'https://secure.gravatar.com/avatar/dc46344b5cdbf99fb62291b4eb9c4aef?s=80&d=identicon', |
69
|
|
|
|
|
|
|
IANKENT => 'https://secure.gravatar.com/avatar/7d3b3b7b9d22aadba754cade8781518c?s=80&d=identicon', |
70
|
|
|
|
|
|
|
JTRAMMELL => 'http://www.gravatar.com/avatar/6e8ddfd51613a0bb512abb09b64dafef?s=80&d=http%3A%2F%2Fwww.gravatar.com%2Favatar%2F7fe2f580391d8c9089747010fada9d22%3Fs%3D130%26d%3Didenticon', |
71
|
|
|
|
|
|
|
SIMCOP => 'https://secure.gravatar.com/avatar/064ea1cf6dd27118fdbbc2b23d12266f?s=80&d=identicon', |
72
|
|
|
|
|
|
|
CARLOS => 'https://secure.gravatar.com/avatar/43d81f6a54ee06bf1190d16f25a2533a?s=80&d=identicon', |
73
|
|
|
|
|
|
|
FGA => 'https://secure.gravatar.com/avatar/a1a232556694ed753ac491703b7df184?s=80&d=identicon', |
74
|
|
|
|
|
|
|
SKINGTON => 'https://secure.gravatar.com/avatar/faf48a00fe1d8c7b282435f54f04c747?s=80&d=identicon', |
75
|
|
|
|
|
|
|
AKIHITO => 'https://secure.gravatar.com/avatar/3a1bdee47e9fdca1cdf3ce4f38651ba2?s=80&d=identicon', |
76
|
|
|
|
|
|
|
GLEACH => 'https://secure.gravatar.com/avatar/05cb19d7843c358211bfdc98be476b68?s=80&d=identicon', |
77
|
|
|
|
|
|
|
MAXS => 'https://secure.gravatar.com/avatar/55768f8a3f6cbfde7396a0a34b590181?s=80&d=identicon', |
78
|
|
|
|
|
|
|
ARUN => 'https://secure.gravatar.com/avatar/8a7e477f0a86af02355043e612baad57?s=80&d=identicon', |
79
|
|
|
|
|
|
|
CKRAS => 'https://secure.gravatar.com/avatar/4745757ad4050f5a2b1ec9c9fb2ff370?s=80&d=identicon', |
80
|
|
|
|
|
|
|
EAST => 'https://secure.gravatar.com/avatar/3cda0d4a4bad85c3b735812b00f8bd23?s=80&d=identicon', |
81
|
|
|
|
|
|
|
INFRARED => 'https://secure.gravatar.com/avatar/a6c59d0a6c1f0042e922ffc033710de0?s=80&d=identicon', |
82
|
|
|
|
|
|
|
NMELNICK => 'http://en.gravatar.com/userimage/885723/e55ab962842497b9bf4b7eaf1291cb22.png', |
83
|
|
|
|
|
|
|
BAHOOTYPR => 'https://secure.gravatar.com/avatar/297175ea2bf4953bce22d24a1aacc102?s=80&d=identicon', |
84
|
|
|
|
|
|
|
BENW => 'https://secure.gravatar.com/avatar/351511a02e1c1342d2626cb19e2bdd90?s=80&d=identicon', |
85
|
|
|
|
|
|
|
BIGREDS => 'https://secure.gravatar.com/avatar/0d456579ab7f4822420e87d6159bc9fa?s=80&d=identicon', |
86
|
|
|
|
|
|
|
DAIBA => 'https://secure.gravatar.com/avatar/f64fa36a1fe3c8e7b52cf6e5a21da302?s=80&d=identicon', |
87
|
|
|
|
|
|
|
EUGENEK => 'https://secure.gravatar.com/avatar/a4b9d7b53f4cdbee844f7c572fc3569c?s=80&d=identicon', |
88
|
|
|
|
|
|
|
ROBMAN => 'https://secure.gravatar.com/avatar/755e4df78c1aee18b172a67659ecc870?s=80&d=identicon', |
89
|
|
|
|
|
|
|
GAURAV => 'https://secure.gravatar.com/avatar/9a3fa34c402691c2f623cba58d01292e?s=80&d=identicon', |
90
|
|
|
|
|
|
|
ORCHEW => 'https://secure.gravatar.com/avatar/4a66363f9a279ce1a2914752a3b02b17?s=80&d=identicon', |
91
|
|
|
|
|
|
|
PERLPIE => 'https://secure.gravatar.com/avatar/cb9aa3bf6f061556cf82b103c62ebbfe?s=80&d=identicon', |
92
|
|
|
|
|
|
|
SZARATE => 'https://secure.gravatar.com/avatar/236a2d411a6c0ed05f9cc9e766b3df4e?s=80&d=identicon', |
93
|
|
|
|
|
|
|
ZHDA => 'https://secure.gravatar.com/avatar/404694046d02a4714216c13dce0761f4?s=80&d=identicon', |
94
|
|
|
|
|
|
|
); |
95
|
|
|
|
|
|
|
# end data generated at build time |
96
|
|
|
|
|
|
|
|
97
|
4
|
100
|
|
4
|
1
|
17039
|
sub authors { wantarray ? %authors : \%authors } |
98
|
|
|
|
|
|
|
|
99
|
1
|
|
|
1
|
1
|
940
|
sub category { 'Nonhuman' } |
100
|
|
|
|
|
|
|
|
101
|
1
|
|
|
1
|
1
|
10
|
sub avatar_url { return $avatar_urls{$_[1]} } |
102
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
1; |
104
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
=pod |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
=encoding UTF-8 |
108
|
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
=head1 NAME |
110
|
|
|
|
|
|
|
|
111
|
|
|
|
|
|
|
Acme::CPANAuthors::Nonhuman - We are non-human CPAN authors |
112
|
|
|
|
|
|
|
|
113
|
|
|
|
|
|
|
=head1 VERSION |
114
|
|
|
|
|
|
|
|
115
|
|
|
|
|
|
|
version 0.025 |
116
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
=head1 SYNOPSIS |
118
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
use Acme::CPANAuthors; |
120
|
|
|
|
|
|
|
use Acme::CPANAuthors::Nonhuman; |
121
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
my $authors = Acme::CPANAuthors->new('Nonhuman'); |
123
|
|
|
|
|
|
|
my $number = $authors->count; |
124
|
|
|
|
|
|
|
my @ids = $authors->id; |
125
|
|
|
|
|
|
|
my @distros = $authors->distributions('ETHER'); |
126
|
|
|
|
|
|
|
my $url = $authors->avatar_url('MITHALDU'); |
127
|
|
|
|
|
|
|
my $kwalitee = $authors->kwalitee('GAURAV'); |
128
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
my %authorshash = Acme::CPANAuthors::Nonhuman->authors; |
130
|
|
|
|
|
|
|
my $authorshashref = Acme::CPANAuthors::Nonhuman->authors; |
131
|
|
|
|
|
|
|
my $category = Acme::CPANAuthors::Nonhuman->category; |
132
|
|
|
|
|
|
|
|
133
|
|
|
|
|
|
|
=head1 DESCRIPTION |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
This class provides a hash of PAUSE IDs and names of non-human CPAN authors. |
136
|
|
|
|
|
|
|
On the internet, no one knows you're a cat (unless your avatar gives it away)! |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
=begin html |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
|
|
|
|
|
|
|
margin-left: auto; margin-right: auto; max-width: 50%"> |
142
|
|
|
|
|
|
|
|
143
|
|
|
|
|
|
|
|
144
|
|
|
|
|
|
|
                                     |
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
|
184
|
|
|
|
|
|
|
|
185
|
|
|
|
|
|
|
=end html |
186
|
|
|
|
|
|
|
|
187
|
|
|
|
|
|
|
The original list of authors was determined via |
188
|
|
|
|
|
|
|
L. |
189
|
|
|
|
|
|
|
|
190
|
|
|
|
|
|
|
=for stopwords programmatically |
191
|
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
I wrote this module initially as a reaction to a previous L |
193
|
|
|
|
|
|
|
distribution that inappropriately highlighted a particular demographic (it has |
194
|
|
|
|
|
|
|
now since been deleted). Then, I realized that so much of the content I |
195
|
|
|
|
|
|
|
wanted to include in this module could be programmatically generated, so I |
196
|
|
|
|
|
|
|
continued on as an exercise in templating code at build time using raw data in |
197
|
|
|
|
|
|
|
the C<__DATA__> section. That support code has since been split off into its |
198
|
|
|
|
|
|
|
own distribution, L. |
199
|
|
|
|
|
|
|
|
200
|
|
|
|
|
|
|
This module has continued to evolve, as rough edges in bits of the toolchain |
201
|
|
|
|
|
|
|
are polished. These improvements include: |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
=for stopwords metacpan |
204
|
|
|
|
|
|
|
|
205
|
|
|
|
|
|
|
=over 4 |
206
|
|
|
|
|
|
|
|
207
|
|
|
|
|
|
|
=item * |
208
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
better HTML rendering in L |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
=item * |
212
|
|
|
|
|
|
|
|
213
|
|
|
|
|
|
|
proper encoding handling in L and many of its plugins |
214
|
|
|
|
|
|
|
|
215
|
|
|
|
|
|
|
=item * |
216
|
|
|
|
|
|
|
|
217
|
|
|
|
|
|
|
parsing improvements in L |
218
|
|
|
|
|
|
|
|
219
|
|
|
|
|
|
|
=item * |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
heuristic refinement in kwalitee metrics in L |
222
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
=item * |
224
|
|
|
|
|
|
|
|
225
|
|
|
|
|
|
|
additional interfaces added to L |
226
|
|
|
|
|
|
|
|
227
|
|
|
|
|
|
|
=back |
228
|
|
|
|
|
|
|
|
229
|
|
|
|
|
|
|
=head1 METHODS |
230
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
=head2 authors |
232
|
|
|
|
|
|
|
|
233
|
|
|
|
|
|
|
Returns the hash of authors in list context, or a hashref in scalar context. |
234
|
|
|
|
|
|
|
|
235
|
|
|
|
|
|
|
=head2 category |
236
|
|
|
|
|
|
|
|
237
|
|
|
|
|
|
|
Returns C<'Nonhuman'>. |
238
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
=head2 avatar_url |
240
|
|
|
|
|
|
|
|
241
|
|
|
|
|
|
|
=for stopwords gravatar |
242
|
|
|
|
|
|
|
|
243
|
|
|
|
|
|
|
Returns the gravatar url of the id shown on L. Note this |
244
|
|
|
|
|
|
|
is B necessarily the same result as C<< Acme::CPANAuthors->url($id) >>: |
245
|
|
|
|
|
|
|
this module queries metacpan directly, where a user may have overridden the |
246
|
|
|
|
|
|
|
gravatar in their profile; whereas L (via L) |
247
|
|
|
|
|
|
|
performs a lookup on the email address registered with PAUSE. |
248
|
|
|
|
|
|
|
|
249
|
|
|
|
|
|
|
=head1 SEE ALSO |
250
|
|
|
|
|
|
|
|
251
|
|
|
|
|
|
|
=over 4 |
252
|
|
|
|
|
|
|
|
253
|
|
|
|
|
|
|
=item * |
254
|
|
|
|
|
|
|
|
255
|
|
|
|
|
|
|
L - the main class to manipulate this one. |
256
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
=back |
258
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
=head1 SUPPORT |
260
|
|
|
|
|
|
|
|
261
|
|
|
|
|
|
|
It may well be the case that some of the authors listed here are B |
262
|
|
|
|
|
|
|
actually non-human, in which case this absolutely must be reported immediately |
263
|
|
|
|
|
|
|
so this module can be corrected! We of the furry and clawed will not stand for |
264
|
|
|
|
|
|
|
imposters in our midst. |
265
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
On the other hand, occasionally new brothers and sisters join the Perl family |
267
|
|
|
|
|
|
|
and are not recognized here -- please let me know so they can be added to the |
268
|
|
|
|
|
|
|
list. |
269
|
|
|
|
|
|
|
|
270
|
|
|
|
|
|
|
Bugs may be submitted through L |
271
|
|
|
|
|
|
|
(or L). |
272
|
|
|
|
|
|
|
|
273
|
|
|
|
|
|
|
I am also usually active on irc, as 'ether' at C. |
274
|
|
|
|
|
|
|
|
275
|
|
|
|
|
|
|
=head1 AUTHOR |
276
|
|
|
|
|
|
|
|
277
|
|
|
|
|
|
|
Karen Etheridge |
278
|
|
|
|
|
|
|
|
279
|
|
|
|
|
|
|
=head1 CONTRIBUTORS |
280
|
|
|
|
|
|
|
|
281
|
|
|
|
|
|
|
=for stopwords Graham Knop Carlos Lima Сергей Романов |
282
|
|
|
|
|
|
|
|
283
|
|
|
|
|
|
|
=over 4 |
284
|
|
|
|
|
|
|
|
285
|
|
|
|
|
|
|
=item * |
286
|
|
|
|
|
|
|
|
287
|
|
|
|
|
|
|
Graham Knop |
288
|
|
|
|
|
|
|
|
289
|
|
|
|
|
|
|
=item * |
290
|
|
|
|
|
|
|
|
291
|
|
|
|
|
|
|
Carlos Lima |
292
|
|
|
|
|
|
|
|
293
|
|
|
|
|
|
|
=item * |
294
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
Сергей Романов |
296
|
|
|
|
|
|
|
|
297
|
|
|
|
|
|
|
=back |
298
|
|
|
|
|
|
|
|
299
|
|
|
|
|
|
|
=head1 COPYRIGHT AND LICENCE |
300
|
|
|
|
|
|
|
|
301
|
|
|
|
|
|
|
This software is copyright (c) 2013 by Karen Etheridge. |
302
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
This is free software; you can redistribute it and/or modify it under |
304
|
|
|
|
|
|
|
the same terms as the Perl 5 programming language system itself. |
305
|
|
|
|
|
|
|
|
306
|
|
|
|
|
|
|
=cut |
307
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
__DATA__ |