Bundle-PBib
view release on metacpan or search on metacpan
lib/Biblio/Bibtex.pm view on Meta::CPAN
}
sub expandShortcut {
my ($shortcuts, $text) = @_;
my @pars = split(/:/, $text);
my $k = shift @pars; if( @pars ) { $k = "$k:"; }
my $v = $shortcuts->{$k};
$v =~ s/%(\d)/ @pars[$1-1] /ge;
return $v;
# return $shortcuts->{$text};
}
#sub updateShortcuts {
# my ($self) = @_;
# delete $self->{'shortcuts'};
#}
#
#
# save methods
#
#
sub write {
my ($self, $filename) = @_;
$filename = $self->filename() unless defined($filename);
return unless defined($filename);
my $fh = new FileHandle("> $filename");
if( not defined($fh) ) {
print STDERR "Can't open $filename for writing.\n";
return;
}
print STDERR "write bibtex db to $filename\n";
$self->writeHeader($fh);
$self->writePapers($fh);
$fh->close();
}
sub writeHeader { my ($self, $fh) = @_;
print $fh "%% bibtex database, written by pbib\n\n";
}
sub writePapers { my ($self, $fh) = @_;
my @ids = $self->getPaperIDs();
my $type; my $paper;
my $p; foreach $p (sort(@ids)) {
$paper = $self->paper($p);
$type = typename($paper->{'Type'});
print $fh "\@$type \{$p,\n";
my $e; foreach $e (sort(keys(%{$paper}))) {
if( defined($paper->{$e}) ) {
print $fh " ", $self->quoteEntry($e), " = ",
$self->quoteValue($paper->{$e}), ",\n";
}
}
print $fh "\}\n\n";
}
}
sub quoteEntry { my ($self, $entry) = @_;
# I guess, I'm using bibtex names!?
if( exists($entry_names{$entry}) ) {
$entry = $entry_names{$entry};
}
return lc($entry);
}
sub quoteValue { my ($self, $text) = @_;
# not quite advanced yet ...
return "\"$text\"";
}
#
#
# class methods
#
#
sub typename { my $type = shift;
return "misc" if( not defined($type) );
return "misc" if( $type < 0 || $type >= scalar(@type_names) );
return @type_names[$type];
}
1;
#
# $Log: Bibtex.pm,v $
# Revision 1.2 2002/06/03 11:40:08 Diss
# fixed bug in package name
#
# Revision 1.1 2002/03/24 18:54:25 Diss
# simple package to write bibtex databases
#
# Revision 1.2 2002/03/22 17:31:02 Diss
# small changes
#
# Revision 1.1 2002/03/18 11:15:47 Diss
# major additions: replace [] refs, generate bibliography using [{}], ...
#
( run in 1.400 second using v1.01-cache-2.11-cpan-99c4e6809bf )