NAME¶
Biblio::EndnoteStyle - reference formatting using Endnote-like templates
SYNOPSIS¶
use Biblio::EndnoteStyle;
$style = new Biblio::EndnoteStyle();
($text, $errmsg) = $style->format($template, \%fields);
DESCRIPTION¶
This small module provides a way of formatting bibliographic references using
style templates similar to those used by the popular reference management
software Endnote (
http://www.endnote.com/). The API is embarrassingly simple:
a formatter object is made using the class's constructor, the
"new()" method; "format()" may then be repeatedly called
on this object, using the same or different templates.
(The sole purpose of the object is to cache compiled templates so that multiple
"format()" invocations are more efficient than they would otherwise
be. Apart from that, the API might just as well have been a single function.)
METHODS¶
new()
$style = new Biblio::EndnoteStyle();
Creates a new formatter object. Takes no arguments.
debug()
$olddebug = $style->debug(1);
Turns debugging on or off and returns the old debugging status. If an argument
is provided, then debugging is turned either on or off according to whether
then argument is true or false. In any case, the old value of the debugging
status is returned, so that a call with no argument is a side-effect-free
inquiry.
When debugging is turned on, compiled templates are dumped to standard error. It
is not pretty.
format()
($text, $errmsg) = $style->format($template, \%fields);
Formats a reference, consisting of a hash of fields, according to an
Endnote-like template. The template is a string essentially the same as those
used in Endnote, as documented in the Endnote X User Guide at
http://www.endnote.com/support/helpdocs/EndNoteXWinManual.pdf pages 390ff. In
particular, pages 415-210 have details of the recipe format. Because the
templates used in this module are plain text, a few special characters are
used:
- AX
- Link adjacent words. This is the "non-breaking
space" described on page 418 of the EndNote X
- |
- Forced Seperation of elements that would otherwise be
dependent.
- ^
- Separator for singular/plural aternatives.
- `
- Used to prevent literal text from being interpreted as a
fieldname.
The hash of fields is passed by reference: keys are fieldnames, and the
corresponding values are the data. PLEASE NOTE AN IMPORTANT DIFFERENCE. Keys
that do not appear in the hash at all are not considered to be fields, so that
if they appear in the template, they will be interpreted as literal text; keys
that appear in the hash but whose values are undefined or empty are considered
to be fields with no value, and will be formatted as empty with dependent text
omitted. So for example:
$style->format(";Author: ", { Author => "Taylor" }) eq ":Taylor: "
$style->format(";Author: ", { Author => "" }) eq ";"
$style->format(";Author: ", { xAuthor => "" }) eq ";Author: "
"format()" returns two values: the formatted reference and an
error-message. The error message is defined if and only if the formatted
reference is not.
AUTHOR¶
Mike Taylor, <mike@miketaylor.org.uk>
COPYRIGHT AND LICENCE¶
Copyright (C) 2007 by Mike Taylor.
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself, either Perl version 5.8.4 or, at your option,
any later version of Perl 5 you may have available.