Acme-CPANAuthors

 view release on metacpan or  search on metacpan

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


__PACKAGE__->mk_ro_accessors(qw/
  prefix
  dist
  version
  maturity
  filename
  cpanid
  distvname
  packages
/);

*path    = *prefix;
*name    = *dist;
*pauseid = *cpanid;

sub contains { @{ shift->{packages} || [] } }

package #
  Acme::CPANAuthors::Utils::Packages::Package;

use strict;
use warnings;
use base 'Class::Accessor::Fast';

__PACKAGE__->mk_ro_accessors(qw/
  package
  version
  distribution
/);

*name = *package;

1;

__END__

=head1 NAME

Acme::CPANAuthors::Utils::Packages

=head1 SYNOPSIS

  use Acme::CPANAuthors::Utils::Packages;

  # you can't pass the raw content of 02packages.details.txt(.gz)
  my $packages = Acme::CPANAuthors::Utils::Packages->new(
    'cpan/modules/02packages.details.txt.gz'
  );

  my $package = $packages->package('Acme::CPANAuthors');

  my $dist    = $packages->distribution('I/IS/ISHIGAKI/Acme-CPANAuthors-0.12.tar.gz');

  my $latest  = $packages->latest_distribution('Acme-CPANAuthors');

=head1 DESCRIPTION

This is a subset of L<Parse::CPAN::Packages>. The reading
methods are similar in general (accessors are marked as
read-only, though). Internals and data-parsing methods may
be different, but you usually don't need to care.

=head1 METHODS

=head2 new

always takes a file name (both raw C<.txt> file and C<.txt.gz>
file name are acceptable). Raw content of the file is not
acceptable.

=head2 package

takes a name of a package, and returns an object that represents it.

=head2 distribution

takes a file name of a distribution, and returns an object that
represents it.

=head2 latest_distribution

takes a name of a distribution, and returns an object that represents
the latest version of it.

=head2 packages, distributions, latest_distributions

returns a list of stored packages or (latest) distribution objects.

=head2 package_count, distribution_count, latest_distribution_count

returns the number of stored packages or (latest) distributions.

=head1 PREAMBLE ACCESSORS

=head2 file, url, description, columns, intended_for, written_by, line_count, last_updated

These are accessors to the preamble information of
C<02packages.details.txt>.

=head1 PACKAGE ACCESSORS

=head2 package (name), version

  my $package = $packages->package('Acme::CPANAuthors');
  print $package->package, "\n"; # Acme::CPANAuthors
  print $package->version, "\n"; # 0.12

=head2 distribution

returns an object that represents the distribution that the package
belongs to.

=head1 DISTRIBUTION ACCESSORS

=head2 prefix (path), dist (name), version, maturity, filename, cpanid (pauseid), distvname

  my $dist = $packages->distribution('I/IS/ISHIGAKI/Acme-CPANAuthors-0.12.tar.gz');
  print $dist->prefix,"\n";    # I/IS/ISHIGAKI/Acme-CPANAuthors-0.12.tar.gz
  print $dist->dist,"\n";      # Acme-CPANAuthors
  print $dist->version,"\n";   # 0.12



( run in 2.089 seconds using v1.01-cache-2.11-cpan-fe3c2283af0 )