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   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            
141
            margin-left: auto; margin-right: auto; max-width: 50%">
142              
143            
144             ETHERVOJIVANWILLSMITHALDUDOLMENZDMALTREUSHIROSEKAAREAKXLIXBBAXTERABERNDTARUNBEARIANKENTJTRAMMELLSIMCOPCARLOSFGASKINGTONAKIHITOGLEACHMAXSARUNCKRASEASTINFRAREDNMELNICKBAHOOTYPRBENWBIGREDSDAIBAEUGENEKROBMANGAURAVORCHEWPERLPIESZARATEZHDA
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__