| line | stmt | bran | cond | sub | pod | time | code | 
| 1 | 3 |  |  | 3 |  | 102482 | use strict; | 
|  | 3 |  |  |  |  | 23 |  | 
|  | 3 |  |  |  |  | 119 |  | 
| 2 | 3 |  |  | 3 |  | 24 | use warnings; | 
|  | 3 |  |  |  |  | 9 |  | 
|  | 3 |  |  |  |  | 217 |  | 
| 3 |  |  |  |  |  |  | package Acme::CPANAuthors::Nonhuman; # git description: v0.025-4-g5e85df3 | 
| 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.026'; | 
| 9 |  |  |  |  |  |  |  | 
| 10 | 3 |  |  | 3 |  | 1586 | use utf8; | 
|  | 3 |  |  |  |  | 52 |  | 
|  | 3 |  |  |  |  | 20 |  | 
| 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 |  |  |  |  |  |  | ZDM => 'Dmytro Zagashev', | 
| 19 |  |  |  |  |  |  | MITHALDU => 'Christian Walde', | 
| 20 |  |  |  |  |  |  | ALTREUS => 'Alastair McGowan-Douglas', | 
| 21 |  |  |  |  |  |  | DOLMEN => 'Olivier Mengué', | 
| 22 |  |  |  |  |  |  | HIROSE => 'HIROSE Masaaki', | 
| 23 |  |  |  |  |  |  | KAARE => 'Kaare Rasmussen', | 
| 24 |  |  |  |  |  |  | SIMCOP => 'Ryan Voots', | 
| 25 |  |  |  |  |  |  | AKXLIX => 'azuma, kuniyuki', | 
| 26 |  |  |  |  |  |  | BBAXTER => 'Brad Baxter', | 
| 27 |  |  |  |  |  |  | ABERNDT => 'Alan Berndt', | 
| 28 |  |  |  |  |  |  | ARUNBEAR => 'Arun Prasaad', | 
| 29 |  |  |  |  |  |  | SKINGTON => 'Sam Kington', | 
| 30 |  |  |  |  |  |  | IANKENT => 'Ian Kent', | 
| 31 |  |  |  |  |  |  | JTRAMMELL => 'John J. Trammell', | 
| 32 |  |  |  |  |  |  | CARLOS => 'Carlos Lima', | 
| 33 |  |  |  |  |  |  | FGA => 'Fabrice Gabolde', | 
| 34 |  |  |  |  |  |  | GLEACH => 'Geoffrey Leach', | 
| 35 |  |  |  |  |  |  | AKIHITO => 'Akihito Takeda', | 
| 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 |  |  |  |  |  |  | ZDM => 'https://secure.gravatar.com/avatar/f99956427457624457d0b626f492747d.png', | 
| 60 |  |  |  |  |  |  | MITHALDU => 'https://secure.gravatar.com/avatar/d9c28af939032ab0c30fd7be8fdc1040?s=80&d=identicon', | 
| 61 |  |  |  |  |  |  | ALTREUS => 'https://s.gravatar.com/avatar/f6ff3f40f3b6fdf036bff73832357634?s=80', | 
| 62 |  |  |  |  |  |  | DOLMEN => 'https://secure.gravatar.com/avatar/70d9b050bfe39350c234d710fadfcd39?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 |  |  |  |  |  |  | SIMCOP => 'https://secure.gravatar.com/avatar/064ea1cf6dd27118fdbbc2b23d12266f?s=80&d=identicon', | 
| 66 |  |  |  |  |  |  | AKXLIX => 'https://secure.gravatar.com/avatar/22376afdd53ef1adc944c7168349cd8d?s=80&d=identicon', | 
| 67 |  |  |  |  |  |  | BBAXTER => 'https://secure.gravatar.com/avatar/af7986efb2374332f4babfaaef3b55d4?s=80&d=identicon', | 
| 68 |  |  |  |  |  |  | ABERNDT => 'https://secure.gravatar.com/avatar/888b4060c4844235ed6897de4946f9dd?s=80&d=identicon', | 
| 69 |  |  |  |  |  |  | ARUNBEAR => 'https://secure.gravatar.com/avatar/dc46344b5cdbf99fb62291b4eb9c4aef?s=80&d=identicon', | 
| 70 |  |  |  |  |  |  | SKINGTON => 'https://secure.gravatar.com/avatar/faf48a00fe1d8c7b282435f54f04c747?s=80&d=identicon', | 
| 71 |  |  |  |  |  |  | IANKENT => 'https://secure.gravatar.com/avatar/7d3b3b7b9d22aadba754cade8781518c?s=80&d=identicon', | 
| 72 |  |  |  |  |  |  | JTRAMMELL => 'http://www.gravatar.com/avatar/6e8ddfd51613a0bb512abb09b64dafef?s=80&d=http%3A%2F%2Fwww.gravatar.com%2Favatar%2F7fe2f580391d8c9089747010fada9d22%3Fs%3D130%26d%3Didenticon', | 
| 73 |  |  |  |  |  |  | CARLOS => 'https://secure.gravatar.com/avatar/43d81f6a54ee06bf1190d16f25a2533a?s=80&d=identicon', | 
| 74 |  |  |  |  |  |  | FGA => 'https://secure.gravatar.com/avatar/a1a232556694ed753ac491703b7df184?s=80&d=identicon', | 
| 75 |  |  |  |  |  |  | GLEACH => 'https://secure.gravatar.com/avatar/05cb19d7843c358211bfdc98be476b68?s=80&d=identicon', | 
| 76 |  |  |  |  |  |  | AKIHITO => 'https://secure.gravatar.com/avatar/3a1bdee47e9fdca1cdf3ce4f38651ba2?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 | 22134 | sub authors { wantarray ? %authors : \%authors } | 
| 98 |  |  |  |  |  |  |  | 
| 99 | 1 |  |  | 1 | 1 | 1806 | sub category { 'Nonhuman' } | 
| 100 |  |  |  |  |  |  |  | 
| 101 | 1 |  |  | 1 | 1 | 15 | 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.026 | 
| 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__ |