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 )