Acme-CPANAuthors-AnyEvent

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

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

META.yml  view on Meta::CPAN

---
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' => {

README  view on Meta::CPAN

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',

README  view on Meta::CPAN

    *   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>

ex/test.pl  view on Meta::CPAN

#!/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;



( run in 1.104 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )