Bundle-PBib
view release on metacpan or search on metacpan
lib/PBib/Document.pm view on Meta::CPAN
'verbose' => 1,
);
print $doc->filename();
my @paragraphs = $doc->paragraphs();
$doc->close();
=head1 DESCRIPTION
Factory class to create documents that are processed by PBib.
=cut
package PBib::Document;
use 5.006;
use strict;
use warnings;
#use English;
# for debug:
#use Data::Dumper;
BEGIN {
use vars qw($Revision $VERSION);
my $major = 1; q$Revision: 25 $ =~ /: (\d+)/; my ($minor) = ($1); $VERSION = "$major." . ($minor<10 ? '0' : '') . $minor;
}
# superclass
#use YYYY;
#use vars qw(@ISA);
#@ISA = qw(YYYY);
# used modules
use FileHandle;
use File::Spec;
use Encode;
use Carp;
# module variables
#use vars qw(mmmm);
#
#
# constructor
#
#
=head1 CONSTRUCTOR
=over
=item $doc = new PBib::Document('filename' => $filename);
Arguments are passed as hash:
=over
=item B<filename> => string for filename
=item B<class> => document class to use, e.g. 'RTF' or 'MSWord'
If class is not defined, it is tried to be guessed by looking at the file. (Currently, the filename's extension only.)
=item B<formatOptions> => hash with options passed to ReferenceFormator
OBSOLETE??
=item B<bibitemOptions> => hash with options passed to BibItemFormator
OBSOLETE??
=item B<converter> => string for ReferenceConverter class
OBSOLETE??
=item B<formator> => string for ReferenceFormator class
OBSOLETE??
=item B<mode> => "r" | "w"
Mode for this document, used to open the file.
"r" = Read, "w" = Write
=item B<verbose> => If true, produce more verbose output.
=back
=cut
sub new {
my $self = shift;
my %args = @_;
my $class = ref($self) || $self;
if( $class eq 'PBib::Document' ) {
$class = findDocumentClass(%args);
}
my $doc = bless \%args, $class;
#print Dumper $doc;
$doc->initialize();
return $doc;
}
sub initialize {
my $self = shift;
}
sub findDocumentClass {
my %args = @_;
my $class = $args{'class'};
my $filename = $args{'filename'};
unless( defined $class ) {
if( defined $filename ) {
FILETYPE: {
foreach my $pattern (keys(%{$args{'file-types'} || {}})) {
if( $filename =~ /$pattern/i ) {
$class = $args{'file-types'}->{$pattern}; last FILETYPE;
}
}
if( $filename =~ /\.doc$/i ) { $class = 'MSWord'; last FILETYPE; }
if( $filename =~ /\.rtf$/i ) { $class = 'RTF'; last FILETYPE; }
if( $filename =~ /\.s[tx]w$/i ) { $class = 'OpenOfficeSXW'; last FILETYPE; }
( run in 0.564 second using v1.01-cache-2.11-cpan-39bf76dae61 )