view release on metacpan or search on metacpan
Revision history for Acme-CPANAuthors-AnyEvent
0.07 2010-10-15
We have new authors:
* CORNELIUS
* PUNYTAN
* CLKAO
* SANKO
* JHTHORSEN
* DMITRYNOD
* NAIM
* KEROYON
0.05 2009-01-26
We have new authors:
* Daisuke Maki (DMAKI)
* Franck Cuny (FRANCKC)
* Liu Kang Min (GUGOD)
* Mark Grimes (MGRIMES)
* Takeshi Miki (MIKI)
* Peter Makholm (PMAKHOLM)
* Vitaly Kramskikh (VKRAMSKIH)
0.04 2009-10-01
Added Kevin Jones and Yuval Kogman
---
abstract: 'We are CPAN Authors of AnyEvent!'
author:
- 'Mons Anderson, C<< <mons at cpan.org> >>'
- 'Mons Anderson <mons@cpan.org>'
build_requires:
ExtUtils::MakeMaker: 6.42
Test::More: 0
Test::NoWarnings: 0
lib::abs: 0.90
configure_requires:
ExtUtils::MakeMaker: 6.42
distribution_type: module
Makefile.PL view on Meta::CPAN
use inc::Module::Install;
name 'Acme-CPANAuthors-AnyEvent';
all_from 'lib/Acme/CPANAuthors/AnyEvent.pm';
author 'Mons Anderson <mons@cpan.org>';
license 'perl';
build_requires 'Test::More';
build_requires 'Test::NoWarnings';
build_requires 'lib::abs', '0.90';
requires 'Acme::CPANAuthors::Register';
requires 'Acme::CPANAuthors';
provides 'Acme::CPANAuthors::AnyEvent' => {
NAME
Acme::CPANAuthors::AnyEvent - We are CPAN Authors of AnyEvent!
VERSION
Version 0.07
SYNOPSIS
use Acme::CPANAuthors;
my $authors = Acme::CPANAuthors->new('AnyEvent');
my $number = $authors->count;
my @ids = $authors->id;
my @distros = $authors->distributions("MLEHMANN");
my $url = $authors->avatar_url("ELMEX");
my $kwalitee = $authors->kwalitee("MONS");
my $name = $authors->name("MIYAGAWA");
DESCRIPTION
This class provides a hash of AnyEvent namespace CPAN Authors' PAUSE ID
and name to the Acme::CPANAuthors module.
It is currently statically generated information, I hope to make it
dynamic in the future.
MAINTENANCE
If you are a AnyEvent CPAN author not listed here, please send us your
ID/name via email or RT so we can always keep this module up to date.
And if you aren't a AnyEvent CPAN author listed here, please send us
your ID/name via email or RT and we will remove your name.
CONTAINED AUTHORS
Now 35 AnyEvent CPAN authors:
MLEHMANN => 'Marc Lehmann', # Main AnyEvent author ;)
AGRUNDMA => 'Andy Grundman',
BEPPU => 'John Beppu',
BLUET => 'BlueT - Matthew Lien - Che-Ming Lien',
CLKAO => 'Chia-liang Kao',
CORNELIUS => 'Lin You An',
DMAKI => 'Daisuke Maki',
DMITRYNOD => 'Dmitrii Konstantinov',
ELMEX => 'Robin Redeker',
FRANCKC => 'Franck Cuny',
* Acme::CPANAuthors
* Acme::CPANAuthors::Register
The subject
* AnyEvent
Fun and etc
* Acme::CPANAuthors::Not
We are not CPAN authors
* Acme::CPANAuthors::Acme::CPANAuthors::Authors
We are CPAN authors who have authored Acme::CPANAuthors modules
* Acme::CPANAuthors::You::re_using
We are the CPAN authors that have written the modules installed on
your perl!
* Acme::CPANAuthors::POE
We are CPAN Authors of POE
Search
<http://search.cpan.org/search?query=Acme%3A%3ACPANAuthors&mode=all>
<http://search.cpan.org/search?query=AnyEvent&mode=all>
#!/usr/bin/env perl
use strict;
use lib::abs '../lib';
use Acme::CPANAuthors;
my $authors = Acme::CPANAuthors->new('AnyEvent');
print 'AnyEvent CPAN authors: ', $authors->count, "\n\n";
printf "%-20s %s\n", $_, $authors->name($_) for $authors->id;
print "\nAlso:\n";
print "Marc have distros: ", 0+$authors->distributions("MLEHMANN"),"\n";
print "Robin have avatar: ", $authors->avatar_url("ELMEX"),"\n";
print "Mons' kwalitee is: ", $authors->kwalitee("MONS")->{info}{CPANTS_Game_Kwalitee},"\n";
print "And MYYAGAWA name: ", $authors->name("MIYAGAWA"),"\n";
inc/Module/AutoInstall.pm view on Meta::CPAN
no strict 'refs';
$PostambleUsed = 0;
local *MY::postamble = \&postamble unless defined &MY::postamble;
ExtUtils::MakeMaker::WriteMakefile(%args);
print << "." unless $PostambleUsed;
*** WARNING: Makefile written with customized MY::postamble() without
including contents from Module::AutoInstall::postamble() --
auto installation features disabled. Please contact the author.
.
return 1;
}
sub postamble {
$PostambleUsed = 1;
return <<"END_MAKE";
inc/Module/Install.pm view on Meta::CPAN
#line 1
package Module::Install;
# For any maintainers:
# The load order for Module::Install is a bit magic.
# It goes something like this...
#
# IF ( host has Module::Install installed, creating author mode ) {
# 1. Makefile.PL calls "use inc::Module::Install"
# 2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install
# 3. The installed version of inc::Module::Install loads
# 4. inc::Module::Install calls "require Module::Install"
# 5. The ./inc/ version of Module::Install loads
# } ELSE {
# 1. Makefile.PL calls "use inc::Module::Install"
# 2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install
# 3. The ./inc/ version of Module::Install loads
# }
inc/Module/Install.pm view on Meta::CPAN
#-------------------------------------------------------------
unless ( -f $self->{file} ) {
foreach my $key (keys %INC) {
delete $INC{$key} if $key =~ /Module\/Install/;
}
local $^W;
require "$self->{path}/$self->{dispatch}.pm";
File::Path::mkpath("$self->{prefix}/$self->{author}");
$self->{admin} = "$self->{name}::$self->{dispatch}"->new( _top => $self );
$self->{admin}->init;
@_ = ($class, _self => $self);
goto &{"$self->{name}::import"};
}
local $^W;
*{"${who}::AUTOLOAD"} = $self->autoload;
$self->preload;
inc/Module/Install.pm view on Meta::CPAN
# via $$sym (usually $main::AUTOLOAD) in this case.
# I'm still wondering if we should slurp Makefile.PL to
# get some context or not ...
my ($package, $file, $line) = caller;
die <<"EOT";
Unknown function is found at $file line $line.
Execution of $file aborted due to runtime errors.
If you're a contributor to a project, you may need to install
some Module::Install extensions from CPAN (or other repository).
If you're a user of a module, please contact the author.
EOT
}
my $method = $1;
if ( uc($method) eq $method ) {
# Do nothing
return;
} elsif ( $method =~ /^_/ and $self->can($method) ) {
# Dispatch to the root M:I class
return $self->$method(@_);
}
inc/Module/Install.pm view on Meta::CPAN
# ignore the prefix on extension modules built from top level.
my $base_path = Cwd::abs_path($FindBin::Bin);
unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) {
delete $args{prefix};
}
return $args{_self} if $args{_self};
$args{dispatch} ||= 'Admin';
$args{prefix} ||= 'inc';
$args{author} ||= ($^O eq 'VMS' ? '_author' : '.author');
$args{bundle} ||= 'inc/BUNDLES';
$args{base} ||= $base_path;
$class =~ s/^\Q$args{prefix}\E:://;
$args{name} ||= $class;
$args{version} ||= $class->VERSION;
unless ( $args{path} ) {
$args{path} = $args{name};
$args{path} =~ s!::!/!g;
}
$args{file} ||= "$args{base}/$args{prefix}/$args{path}.pm";
inc/Module/Install/Makefile.pm view on Meta::CPAN
} elsif ( $Module::Install::ExtraTests::use_extratests ) {
# Module::Install::ExtraTests doesn't set $self->tests and does its own tests via harness.
# So, just ignore our xt tests here.
} elsif ( -d 'xt' and ($Module::Install::AUTHOR or $ENV{RELEASE_TESTING}) ) {
$args->{test} = {
TESTS => join( ' ', map { "$_/*.t" } grep { -d $_ } qw{ t xt } ),
};
}
if ( $] >= 5.005 ) {
$args->{ABSTRACT} = $self->abstract;
$args->{AUTHOR} = join ', ', @{$self->author || []};
}
if ( $self->makemaker(6.10) ) {
$args->{NO_META} = 1;
#$args->{NO_MYMETA} = 1;
}
if ( $self->makemaker(6.17) and $self->sign ) {
$args->{SIGN} = 1;
}
unless ( $self->is_admin ) {
delete $args->{SIGN};
inc/Module/Install/Metadata.pm view on Meta::CPAN
};
my @resource_keys = qw{
homepage
bugtracker
repository
};
my @array_keys = qw{
keywords
author
};
*authors = \&author;
sub Meta { shift }
sub Meta_BooleanKeys { @boolean_keys }
sub Meta_ScalarKeys { @scalar_keys }
sub Meta_TupleKeys { @tuple_keys }
sub Meta_ResourceKeys { @resource_keys }
sub Meta_ArrayKeys { @array_keys }
foreach my $key ( @boolean_keys ) {
*$key = sub {
inc/Module/Install/Metadata.pm view on Meta::CPAN
# Some methods pull from POD instead of code.
# If there is a matching .pod, use that instead
my $pod = $file;
$pod =~ s/\.pm$/.pod/i;
$pod = $file unless -e $pod;
# Pull the different values
$self->name_from($file) unless $self->name;
$self->version_from($file) unless $self->version;
$self->perl_version_from($file) unless $self->perl_version;
$self->author_from($pod) unless @{$self->author || []};
$self->license_from($pod) unless $self->license;
$self->abstract_from($pod) unless $self->abstract;
return 1;
}
sub provides {
my $self = shift;
my $provides = ( $self->{values}->{provides} ||= {} );
%$provides = (%$provides, @_) if @_;
inc/Module/Install/Metadata.pm view on Meta::CPAN
my $self = shift;
my $perl_version=_extract_perl_version(Module::Install::_read($_[0]));
if ($perl_version) {
$self->perl_version($perl_version);
} else {
warn "Cannot determine perl version info from $_[0]\n";
return;
}
}
sub author_from {
my $self = shift;
my $content = Module::Install::_read($_[0]);
if ($content =~ m/
=head \d \s+ (?:authors?)\b \s*
([^\n]*)
|
=head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s*
.*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s*
([^\n]*)
/ixms) {
my $author = $1 || $2;
# XXX: ugly but should work anyway...
if (eval "require Pod::Escapes; 1") {
# Pod::Escapes has a mapping table.
# It's in core of perl >= 5.9.3, and should be installed
# as one of the Pod::Simple's prereqs, which is a prereq
# of Pod::Text 3.x (see also below).
$author =~ s{ E<( (\d+) | ([A-Za-z]+) )> }
{
defined $2
? chr($2)
: defined $Pod::Escapes::Name2character_number{$1}
? chr($Pod::Escapes::Name2character_number{$1})
: do {
warn "Unknown escape: E<$1>";
"E<$1>";
};
}gex;
}
elsif (eval "require Pod::Text; 1" && $Pod::Text::VERSION < 3) {
# Pod::Text < 3.0 has yet another mapping table,
# though the table name of 2.x and 1.x are different.
# (1.x is in core of Perl < 5.6, 2.x is in core of
# Perl < 5.9.3)
my $mapping = ($Pod::Text::VERSION < 2)
? \%Pod::Text::HTML_Escapes
: \%Pod::Text::ESCAPES;
$author =~ s{ E<( (\d+) | ([A-Za-z]+) )> }
{
defined $2
? chr($2)
: defined $mapping->{$1}
? $mapping->{$1}
: do {
warn "Unknown escape: E<$1>";
"E<$1>";
};
}gex;
}
else {
$author =~ s{E<lt>}{<}g;
$author =~ s{E<gt>}{>}g;
}
$self->author($author);
} else {
warn "Cannot determine author info from $_[0]\n";
}
}
#Stolen from M::B
my %license_urls = (
perl => 'http://dev.perl.org/licenses/',
apache => 'http://apache.org/licenses/LICENSE-2.0',
apache_1_1 => 'http://apache.org/licenses/LICENSE-1.1',
artistic => 'http://opensource.org/licenses/artistic-license.php',
artistic_2 => 'http://opensource.org/licenses/artistic-license-2.0.php',
lib/Acme/CPANAuthors/AnyEvent.pm view on Meta::CPAN
=head1 VERSION
Version 0.07
=cut
our $VERSION = '0.07';
use Acme::CPANAuthors::Register(
MLEHMANN => 'Marc Lehmann', # Main AnyEvent author ;)
AGRUNDMA => 'Andy Grundman',
BEPPU => 'John Beppu',
BLUET => 'BlueT - Matthew Lien - Che-Ming Lien',
CLKAO => 'Chia-liang Kao',
CORNELIUS => 'Lin You An',
DMAKI => 'Daisuke Maki',
DMITRYNOD => 'Dmitrii Konstantinov',
ELMEX => 'Robin Redeker',
FRANCKC => 'Franck Cuny',
GBARR => 'Graham Barr',
lib/Acme/CPANAuthors/AnyEvent.pm view on Meta::CPAN
TOKUHIROM => 'Tokuhiro Matsuno',
TYPESTER => 'Daisuke Murase',
VKRAMSKIH => 'Vitaly Kramskikh',
YANNK => 'Yann Kerherve',
);
=head1 SYNOPSIS
use Acme::CPANAuthors;
my $authors = Acme::CPANAuthors->new('AnyEvent');
my $number = $authors->count;
my @ids = $authors->id;
my @distros = $authors->distributions("MLEHMANN");
my $url = $authors->avatar_url("ELMEX");
my $kwalitee = $authors->kwalitee("MONS");
my $name = $authors->name("MIYAGAWA");
=head1 DESCRIPTION
This class provides a hash of L<AnyEvent> namespace CPAN Authors' PAUSE ID and name to the L<Acme::CPANAuthors> module.
It is currently statically generated information, I hope to make it dynamic in the future.
=head1 MAINTENANCE
If you are a AnyEvent CPAN author not listed here, please send us your ID/name via email or RT so we can always keep this module up to date.
And if you aren't a AnyEvent CPAN author listed here, please send us your ID/name via email or RT and we will remove your name.
=head1 CONTAINED AUTHORS
Now B<35> AnyEvent CPAN authors:
MLEHMANN => 'Marc Lehmann', # Main AnyEvent author ;)
AGRUNDMA => 'Andy Grundman',
BEPPU => 'John Beppu',
BLUET => 'BlueT - Matthew Lien - Che-Ming Lien',
CLKAO => 'Chia-liang Kao',
CORNELIUS => 'Lin You An',
DMAKI => 'Daisuke Maki',
DMITRYNOD => 'Dmitrii Konstantinov',
ELMEX => 'Robin Redeker',
FRANCKC => 'Franck Cuny',
lib/Acme/CPANAuthors/AnyEvent.pm view on Meta::CPAN
=item * L<AnyEvent>
=back
=head2 Fun and etc
=over 4
=item * L<Acme::CPANAuthors::Not>
We are not CPAN authors
=item * L<Acme::CPANAuthors::Acme::CPANAuthors::Authors>
We are CPAN authors who have authored Acme::CPANAuthors modules
=item * L<Acme::CPANAuthors::You::re_using>
We are the CPAN authors that have written the modules installed on your perl!
=item * L<Acme::CPANAuthors::POE>
We are CPAN Authors of POE
=back
=head2 Search
L<http://search.cpan.org/search?query=Acme%3A%3ACPANAuthors&mode=all>
script/AnyEvent.tt view on Meta::CPAN
=cut
our $VERSION = '%VERSION%';
%REGISTER%
=head1 SYNOPSIS
use Acme::CPANAuthors;
my $authors = Acme::CPANAuthors->new('AnyEvent');
my $number = $authors->count;
my @ids = $authors->id;
my @distros = $authors->distributions("MLEHMANN");
my $url = $authors->avatar_url("ELMEX");
my $kwalitee = $authors->kwalitee("MONS");
my $name = $authors->name("MIYAGAWA");
=head1 DESCRIPTION
This class provides a hash of L<AnyEvent> namespace CPAN Authors' PAUSE ID and name to the L<Acme::CPANAuthors> module.
It is currently statically generated information, I hope to make it dynamic in the future.
=head1 MAINTENANCE
If you are a AnyEvent CPAN author not listed here, please send us your ID/name via email or RT so we can always keep this module up to date.
And if you aren't a AnyEvent CPAN author listed here, please send us your ID/name via email or RT and we will remove your name.
=head1 CONTAINED AUTHORS
%AUTHORS%
=head1 SEE ALSO
=head2 The base
=over 4
script/AnyEvent.tt view on Meta::CPAN
=item * L<AnyEvent>
=back
=head2 Fun and etc
=over 4
=item * L<Acme::CPANAuthors::Not>
We are not CPAN authors
=item * L<Acme::CPANAuthors::Acme::CPANAuthors::Authors>
We are CPAN authors who have authored Acme::CPANAuthors modules
=item * L<Acme::CPANAuthors::You::re_using>
We are the CPAN authors that have written the modules installed on your perl!
=item * L<Acme::CPANAuthors::POE>
We are CPAN Authors of POE
=back
=head2 Search
L<http://search.cpan.org/search?query=Acme%3A%3ACPANAuthors&mode=all>
script/generate.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use CPANPLUS::Backend;
use lib::abs '../lib';
use Acme::CPANAuthors;
use Acme::CPANAuthors::AnyEvent;
my $authors = Acme::CPANAuthors->new('AnyEvent');
my %current = %$authors;
my $current = 0+keys %$authors;
my $cb = CPANPLUS::Backend->new();
my %dist;
my %author;
my %authors;
my %changes;
for my $mod ( $cb->search( type => 'name', allow => [ qr/AnyEvent/ ], verbose => 1 ) ) {
( my $distname = $mod->package ) =~ s{[\d_\.-]+\.tar\.gz$}{};
$dist{$distname}++;
my $aut = $mod->author->cpanid;
$author{ $aut } = $mod->author->author;
push @{ $authors{ $aut }{$distname} }, $mod->name;
}
push @{ $authors{ 'MART' }{'Danga-Socket-AnyEvent'} },'xx';
for my $aut (keys %authors) {
if (exists $current{$aut}) {
$author{$aut} ||= $current{$aut};
delete $current{$aut};
} else {
push @{ $changes{'+'} }, $aut;
}
}
push @{ $changes{'-'} }, keys %current if %current;
if (%changes) {
warn "We have new authors: @{$changes{'+'}}\n" if exists $changes{'+'};
warn "We lost authors: @{$changes{'-'}}\n" if exists $changes{'-'};
} else {
warn "Nothing changed";
exit;
}
#0+%authors !=
my $file = do { open my $f, '<', lib::abs::path('.').'/AnyEvent.tt'; local $/; <$f> };
my $reg = '';
my $pod = '';
my $ver = sprintf "%0.2f", $Acme::CPANAuthors::AnyEvent::VERSION + 0.01;
$pod .= sprintf "Now B<%d> AnyEvent CPAN authors:\n\n", 0+keys %authors;
$pod .= sprintf " %-11s=> '%s', # Main AnyEvent author ;) \n\n", MLEHMANN => $author{MLEHMANN};
$reg .= sprintf "\t%-11s=> '%s', # Main AnyEvent author ;)\n", MLEHMANN => $author{MLEHMANN};
for ( sort keys %authors ) {
next if $_ eq 'MLEHMANN'; # ;)
$reg .= sprintf "\t%-11s=> '%s',\n",$_, $author{$_};
$pod .= sprintf " %-11s=> '%s',\n",$_, $author{$_};
}
$pod .= sprintf "\nAnd we've written B<%d> distros", 0+keys %dist;
$file =~ s{ %REGISTER% }{use Acme::CPANAuthors::Register(\n$reg);}sx;
$file =~ s{ %VERSION% }{$ver}sgx;
$file =~ s{ %AUTHORS% }{$pod}sgx;
print $file;