1 # This module is part of da_reference, and is released under the terms
2 # of the GPL version 2, or any later version, at your option. See the
3 # file README and COPYING for more information.
4 # Copyright 2009 by Don Armstrong <don@donarmstrong.com>.
7 package Reference::Output::Filename;
11 Reference::Output::Filename -- Output a filename for the reference
15 print filename($reference);
17 Returns a filename for the reference
27 use vars qw($REVISION $DEBUG @EXPORT @EXPORT_OK %EXPORT_TAGS);
29 use base qw(Exporter);
32 ($REVISION) = q$LastChangedRevision: 36 $ =~ /\$LastChangedRevision:\s+([^\s+])/;
33 $DEBUG = 0 unless defined $DEBUG;
35 @EXPORT = qw(filename);
37 %EXPORT_TAGS = (output => [qw(filename)],
39 Exporter::export_ok_tags(qw(output));
40 $EXPORT_TAGS{all} = [@EXPORT_OK];
44 # Assigned and discussed at the end of this file
52 print filename($reference).'.pdf';
54 Returns a filename for a reference
59 my $reference = shift;
61 my $title = eval { $reference->title(); };
62 my $fauthor = eval { $reference->first_author(output=>'last'); };
63 my $cauthor = eval { $reference->corresponding_author(output=>'last');};
64 if (defined $fauthor and defined $cauthor and $fauthor eq $cauthor) {
67 my $journal = eval { $reference->journal(output =>'bibtex');};
68 my $volume = eval {$reference->volume();};
69 my $number = eval {$reference->number();};
70 my $page = eval{$reference->pages(output => 'bibtex');};
71 $page =~ s/\s*--\s*\d+\s*// if defined $page;
72 my $year = eval{$reference->date(output=>'year');};
73 my $pmid = eval{$reference->pmid();};
76 map {s/\W+/_/g; $_} map{defined $_ ?$_:()}
77 ($title,$fauthor,$cauthor,
78 $journal,$volume,$number,$page,$year,defined $pmid?"pmid_$pmid":undef));