The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# $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.  <i>$jtitle</i>, $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;