]> git.donarmstrong.com Git - reference.git/blob - blib/script/get_reference
Import original source of Reference 0-Reference
[reference.git] / blib / script / get_reference
1 #!/usr/bin/perl
2
3 eval 'exec /usr/bin/perl  -S $0 ${1+"$@"}'
4     if 0; # not running under some shell
5 # This program is part of da_reference, and is released under the
6 # terms of the GPL version 2, or any later version, at your
7 # option. See the file README and COPYING for more information.
8 # Copyright 2004 by Don Armstrong <don@donarmstrong.com>.
9 # $Id: get_reference 45 2013-09-10 18:05:31Z don $
10
11
12 use warnings;
13 use strict;
14
15
16 use Getopt::Long;
17 use Reference;
18 use Pod::Usage;
19
20 =head1 NAME
21
22 get_reference - Retrieve a reference from somewhere and output the
23 formatted reference to STDOUT.
24
25 =head1 SYNOPSIS
26
27 get_reference [options] referenceid [referenceid ...]
28
29  Options:
30   --pmid,-p referenceid is a pub med id. (Default)
31   --bibtex,-b ouput in bibtex format (Default)
32   --debug, -d debugging level (Default 0)
33   --help,-h display this help
34   --man,-m display manual
35
36 =head1 OPTIONS
37
38 =over
39
40 =item B<--pmid, -p>
41
42 The referenceid listed is a Pub Med ID. (Default)
43
44 =item B<--bibtex, -b>
45
46 Output the listed referenceid in BibTeX format. (Default)
47
48 =item B<--help, -h>
49
50 Display brief useage information.
51
52 =item B<--man, -m>
53
54 Display this manual.
55
56 =back
57
58 =head1 EXAMPLES
59
60      get_reference -p -b -d 1 123456;
61
62      get_reference 123456;
63
64 =cut
65
66
67
68 use vars qw($DEBUG);
69
70 my %options = (pmid   => 1,
71                bibtex => 1,
72                debug  => 0,
73                help   => 0,
74                man    => 0,
75                suggest_name => 0,
76                journal_titles => 0,
77               );
78
79 GetOptions(\%options,'pmid|p','bibtex|b','suggest_name|suggest-name','debug|d','help|h','man|m',
80            'journal_titles|journal-titles|journal_title|journal-titles',
81           );
82
83 pod2usage() if $options{help};
84 pod2usage({verbose=>2}) if $options{man};
85
86 $DEBUG = $options{debug};
87
88 if ($options{pmid} and $options{bibtex}) {
89      use Reference::Type::Article;
90      use Reference::Retrieve::PubMed;
91      use Reference::Output::Bibtex;
92      use Reference::Output::Filename;
93      use Encode qw(encode_utf8);
94      $Reference::Retrieve::PubMed::DEBUG = $options{debug};
95      foreach my $pmid (@ARGV) {
96           next unless ($pmid) = $pmid =~ /(\d+)/;
97           print STDERR "dealing with $pmid\n" if $DEBUG;
98           my $reference = scalar Reference::Retrieve::PubMed::get_reference_by_pmid(pmid => $pmid);
99           print STDERR "Unable to retrieve reference for $pmid\n" and next if not defined $reference;
100           if ($options{suggest_name}) {
101                # try to suggest a name for the reference
102                print '%Filename: '.lc(encode_utf8(Reference::Output::Bibtex::convert_to_utf8(filename($reference))))."\n";
103           }
104       if ($options{journal_titles}) {
105           print '%Medline: @string {'.$reference->journal(output=>'bibtex').'="'.
106               $reference->journal(output=>'medline').qq("}\n);
107           print '%isoabbr: @string {'.$reference->journal(output=>'bibtex').'="'.
108               $reference->journal(output=>'iso').qq("}\n);
109           print '%full: @string {'.$reference->journal(output=>'bibtex').'="'.
110               $reference->journal().qq("}\n);
111       }
112           print scalar bibtex($reference);
113      }
114 }