=head1 NAME

Log::Report::Extract::PerlPPI - Collect translatable strings from Perl using PPI

=head1 INHERITANCE

=head1 SYNOPSIS

 my $ppi = Log::Report::Extract::PerlPPI->new
  ( lexicon => '/usr/share/locale'
  );
 $ppi->process('lib/My/Pkg.pm');  # many times
 $ppi->showStats;   # to dispatchers which accept TRACE or INFO
 $ppi->write;       # also cleans processing memory.

=head1 DESCRIPTION

This module helps maintaining the POT files, updating the list of
message-ids which are kept in them.  After initiation, the L<process()|Log::Report::Extract::PerlPPI/"Processors">
method needs to be called with all files which changed since last processing
and the existing PO files will get updated accordingly.  If no translations
exist yet, one C<textdomain/xx.po> file will be created.

=head1 METHODS

=head2 Constructors

Log::Report::Extract::PerlPPI-E<gt>B<new>(OPTIONS)

=over 4

 Option --Default
 charset  'utf-8'
 lexicon  <required>

. charset => STRING

=over 4

The character-set used in the PO files.

=back

. lexicon => DIRECTORY

=over 4

The place where the lexicon is kept.  When no lexicon is defined yet,
this will be the directory where an C<domain/xx.po> file will be created.

=back

=back

=head2 Accessors

$obj-E<gt>B<charset>

=over 4

Returns the character-set used inside the POT files.

=back

$obj-E<gt>B<domains>

=over 4

Returns a sorted list of all known domain names.

=back

$obj-E<gt>B<index>

=over 4

Returns the L<Log::Report::Lexicon::Index|Log::Report::Lexicon::Index> object, which is listing
the files in the lexicon directory tree.

=back

=head2 Processors

$obj-E<gt>B<process>(FILENAME, OPTIONS)

=over 4

Update the domains mentioned in the FILENAME.  All textdomains defined
in the file will get updated automatically, but not written before
all files where processed.

 Option --Default
 charset  'iso-8859-1'

. charset => STRING

=back

$obj-E<gt>B<showStats>([DOMAINs])

=over 4

Show a status about the DOMAIN (by default all domains).  At least mode
verbose is required to see this.

=back

$obj-E<gt>B<write>([DOMAIN])

=over 4

Update the information of the files related to DOMAIN, by default all
processed DOMAINS.  All information known about the DOMAIN is removed
from the cache.

=back

=head1 SEE ALSO

This module is part of Log-Report distribution version 0.23,
built on April 24, 2009. Website: F<http://perl.overmeer.net/log-report/>

=head1 LICENSE

Copyrights 2007-2009 by Mark Overmeer. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See F<http://www.perl.com/perl/misc/Artistic.html>

