# $Id: APP.pm,v 1.2 2007-01-26 13:53:47 mike Exp $ package Keystone::Resolver::plugins::Citation::APP; use strict; use warnings; sub citation { my $class = shift(); my($openurl) = @_; my($genre, $aulast, $auinit, $date, $atitle, $jtitle, $volume, $spage, $epage, $btitle, $pub, $place) = map { $openurl->rft($_) } qw(genre aulast auinit date atitle jtitle volume spage epage btitle pub place); $aulast ||= "[Unspecified author]"; $auinit ||= $openurl->rft("aufirst"); $date ||= "[unspecified date]"; $atitle ||= "[unspecified article title]"; $volume ||= "[unspecified volume]"; my $name; if (defined $auinit) { $auinit =~ s/\.$//; $name = "$aulast, $auinit"; } else { $name = "$aulast"; } if (defined $genre && $genre eq "book") { my $text = "$name. $date. $btitle."; $text .= " $pub." if defined $pub; $text .= " $place." if defined $place; return ($text, "text/html"); } if (!defined $jtitle) { my $issn = $openurl->rft("issn"); if (defined $issn) { $jtitle = "ISSN $issn"; } else { $jtitle = "[unspecified journal]"; } } my $text = "$name. $date. $atitle. $jtitle, $volume"; if (defined $spage && defined $epage) { $text .= ": $spage-$epage"; } elsif (defined $spage) { $text .= ": $spage ff."; } elsif (defined $epage) { $text .= ": to $epage"; } return ("$text.", "text/html"); } 1;