File Coverage

blib/lib/Acme/CPANAuthors/Nonhuman.pm
Criterion Covered Total %
statement 12 12 100.0
branch 2 2 100.0
condition n/a
subroutine 6 6 100.0
pod 3 3 100.0
total 23 23 100.0


line stmt bran cond sub pod time code
1 3     3   44742 use strict;
  3         22  
  3         80  
2 3     3   13 use warnings;
  3         5  
  3         172  
3             package Acme::CPANAuthors::Nonhuman; # git description: v0.022-4-g6027b31
4             # ABSTRACT: We are non-human CPAN authors
5             # KEYWORDS: acmeism cpan authors animals fun
6             # vim: set ts=8 sts=4 sw=4 tw=115 et :
7              
8             our $VERSION = '0.023';
9              
10 3     3   2442 use utf8;
  3         29  
  3         17  
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             HIROSE => 'HIROSE Masaaki',
21             KAARE => 'Kaare Rasmussen',
22             ZDM => 'Dmytro Zagashev',
23             BBAXTER => 'Brad Baxter',
24             ABERNDT => 'Alan Berndt',
25             AKXLIX => 'azuma, kuniyuki',
26             IANKENT => 'Ian Kent',
27             JTRAMMELL => 'John J. Trammell',
28             CARLOS => 'Carlos Lima',
29             FGA => 'Fabrice Gabolde',
30             ARUNBEAR => 'Arun Prasaad',
31             CKRAS => 'Christiaan Kras',
32             SIMCOP => 'Ryan Voots',
33             SKINGTON => 'Sam Kington',
34             AKIHITO => 'Akihito Takeda',
35             GLEACH => 'Geoffrey Leach',
36             MAXS => 'Maxime Soulé',
37             EAST => 'Robert Ginko',
38             INFRARED => 'Michael Kroher',
39             NMELNICK => 'Nicholas Melnick',
40             ACE => 'yuichi tsunoda',
41             ARUN => 'Arun Venkataraman',
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             HIROSE => 'https://secure.gravatar.com/avatar/9fdc92e131d7950e81895ca892b7a384?s=80&d=identicon',
62             KAARE => 'https://secure.gravatar.com/avatar/4981bb322567b621afe038246f4dce1a?s=80&d=identicon',
63             ZDM => 'https://secure.gravatar.com/avatar/f99956427457624457d0b626f492747d.png',
64             BBAXTER => 'https://secure.gravatar.com/avatar/af7986efb2374332f4babfaaef3b55d4?s=80&d=identicon',
65             ABERNDT => 'https://secure.gravatar.com/avatar/888b4060c4844235ed6897de4946f9dd?s=80&d=identicon',
66             AKXLIX => 'https://secure.gravatar.com/avatar/22376afdd53ef1adc944c7168349cd8d?s=80&d=identicon',
67             IANKENT => 'https://secure.gravatar.com/avatar/7d3b3b7b9d22aadba754cade8781518c?s=80&d=identicon',
68             JTRAMMELL => 'http://www.gravatar.com/avatar/6e8ddfd51613a0bb512abb09b64dafef?s=80&d=http%3A%2F%2Fwww.gravatar.com%2Favatar%2F7fe2f580391d8c9089747010fada9d22%3Fs%3D130%26d%3Didenticon',
69             CARLOS => 'https://secure.gravatar.com/avatar/43d81f6a54ee06bf1190d16f25a2533a?s=80&d=identicon',
70             FGA => 'https://secure.gravatar.com/avatar/a1a232556694ed753ac491703b7df184?s=80&d=identicon',
71             ARUNBEAR => 'https://secure.gravatar.com/avatar/dc46344b5cdbf99fb62291b4eb9c4aef?s=80&d=identicon',
72             CKRAS => 'https://secure.gravatar.com/avatar/4745757ad4050f5a2b1ec9c9fb2ff370?s=80&d=identicon',
73             SIMCOP => 'https://secure.gravatar.com/avatar/064ea1cf6dd27118fdbbc2b23d12266f?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             EAST => 'https://secure.gravatar.com/avatar/3cda0d4a4bad85c3b735812b00f8bd23?s=80&d=identicon',
79             INFRARED => 'https://secure.gravatar.com/avatar/a6c59d0a6c1f0042e922ffc033710de0?s=80&d=identicon',
80             NMELNICK => 'http://en.gravatar.com/userimage/885723/e55ab962842497b9bf4b7eaf1291cb22.png',
81             ACE => 'https://secure.gravatar.com/avatar/93433fe8773dc3ead93f928015e3fb13?s=80&d=identicon',
82             ARUN => 'https://secure.gravatar.com/avatar/8a7e477f0a86af02355043e612baad57?s=80&d=identicon',
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 25206 sub authors { wantarray ? %authors : \%authors }
98              
99 1     1 1 1417 sub category { 'Nonhuman' }
100              
101 1     1 1 11 sub avatar_url { return $avatar_urls{$_[1]} }
102              
103             1;
104             # this list isn't sorted by name but by the date they were added
105              
106             =pod
107              
108             =encoding UTF-8
109              
110             =head1 NAME
111              
112             Acme::CPANAuthors::Nonhuman - We are non-human CPAN authors
113              
114             =head1 VERSION
115              
116             version 0.023
117              
118             =head1 SYNOPSIS
119              
120             use Acme::CPANAuthors;
121             use Acme::CPANAuthors::Nonhuman;
122              
123             my $authors = Acme::CPANAuthors->new('Nonhuman');
124             my $number = $authors->count;
125             my @ids = $authors->id;
126             my @distros = $authors->distributions('ETHER');
127             my $url = $authors->avatar_url('MITHALDU');
128             my $kwalitee = $authors->kwalitee('GAURAV');
129              
130             my %authorshash = Acme::CPANAuthors::Nonhuman->authors;
131             my $authorshashref = Acme::CPANAuthors::Nonhuman->authors;
132             my $category = Acme::CPANAuthors::Nonhuman->category;
133              
134             =head1 DESCRIPTION
135              
136             This class provides a hash of PAUSE IDs and names of non-human CPAN authors.
137             On the internet, no one knows you're a cat (unless your avatar gives it away)!
138              
139             =begin html
140              
141            
142
            margin-left: auto; margin-right: auto; max-width: 50%">
143            
144             ETHERVOJIVANWILLSMITHALDUDOLMENHIROSEKAAREZDMBBAXTERABERNDTAKXLIXIANKENTJTRAMMELLCARLOSFGAARUNBEARCKRASSIMCOPSKINGTONAKIHITOGLEACHMAXSEASTINFRAREDNMELNICKACEARUNBAHOOTYPRBENWBIGREDSDAIBAEUGENEKROBMANGAURAVORCHEWPERLPIESZARATEZHDA
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__