]> git.donarmstrong.com Git - reference.git/blob - blib/lib/Reference/Output/Filename.pm
Import original source of Reference 0-Reference
[reference.git] / blib / lib / Reference / Output / Filename.pm
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>.
5 # $Id: Filename.pm 43 2009-03-20 06:33:14Z don $
6
7 package Reference::Output::Filename;
8
9 =head1 NAME
10
11 Reference::Output::Filename -- Output a filename for the reference
12
13 =head1 SYNOPSIS
14
15      print filename($reference);
16
17 Returns a filename for the reference
18
19 =head1 BUGS
20
21 None known.
22
23 =cut
24
25
26 use strict;
27 use vars qw($REVISION $DEBUG @EXPORT @EXPORT_OK %EXPORT_TAGS);
28
29 use base qw(Exporter);
30
31 BEGIN{
32      ($REVISION) = q$LastChangedRevision: 36 $ =~ /\$LastChangedRevision:\s+([^\s+])/;
33      $DEBUG = 0 unless defined $DEBUG;
34
35      @EXPORT = qw(filename);
36      @EXPORT_OK = qw();
37      %EXPORT_TAGS = (output => [qw(filename)],
38                     );
39      Exporter::export_ok_tags(qw(output));
40      $EXPORT_TAGS{all} = [@EXPORT_OK];
41
42 }
43
44 # Assigned and discussed at the end of this file
45 my %bibtex_mapping;
46
47 use Carp;
48
49
50 =head2 filename
51
52      print filename($reference).'.pdf';
53
54 Returns a filename for a reference
55
56 =cut
57
58 sub filename{
59      my $reference = shift;
60
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) {
65          $fauthor = undef;
66      }
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();};
74
75      return join('_',
76                  map {s/\W+/_/g; $_} map{defined $_ ?$_:()}
77                  ($title,$fauthor,$cauthor,
78                   $journal,$volume,$number,$page,$year,defined $pmid?"pmid_$pmid":undef));
79
80
81  }
82
83 1;
84
85
86 __END__
87
88
89
90
91
92