Acme-CPANAuthors

 view release on metacpan or  search on metacpan

lib/Acme/CPANAuthors.pm  view on Meta::CPAN

package Acme::CPANAuthors;

use strict;
use warnings;
use Carp;
use Acme::CPANAuthors::Utils qw( cpan_authors cpan_packages );

our $VERSION = '0.27';

sub new {
  my ($class, @categories) = @_;

  @categories = _list_categories() unless @categories;

  my %authors;
  foreach my $category ( @categories ) {
    %authors = ( %authors, _get_authors_of($category) );
  }

  bless {
      categories => \@categories,
      authors => \%authors,
  }, $class;
}

sub count {
  my $self = shift;

  return scalar keys %{ $self->{authors} };
}

sub id {
  my ($self, $id) = @_;

  unless ( $id ) {
    my @ids = sort keys %{ $self->{authors} };
    return @ids;
  }
  else {
    return $self->{authors}{$id} ? 1 : 0;
  }
}

sub name {
  my ($self, $id) = @_;

  unless ( $id ) {
    return sort values %{ $self->{authors} };
  }
  else {
    return $self->{authors}{$id};
  }
}

sub categories {
  my $self = shift;
  return @{$self->{categories}};
}

sub distributions {
  my ($self, $id) = @_;

  return unless $id;

  my @packages;
  foreach my $package ( cpan_packages->distributions ) {
    if ( $package->cpanid eq $id ) {
      push @packages, $package;
    }
  }

  return @packages;
}

sub latest_distributions {
  my ($self, $id) = @_;

  return unless $id;

  my @packages;



( run in 1.848 second using v1.01-cache-2.11-cpan-524268b4103 )