[Templates] List reference problem
Gervase Markham
gerv@mozilla.org
Sun, 02 Mar 2003 11:50:20 +0000
I am using the TT bindings to GD to create graphs in Bugzilla, with
Template Toolkit 2.08c. See
http://bugzilla.mozilla.org/query.cgi?format=report-graph
and http://xsls.com?224 (you will need a Bugzilla login) for examples.
However, I'm having a problem with the set_legend method of the Graph
object. It expects a list, and internally turns it into a list reference
like this:
sub set_legend # List of legend keys
{
my $self = shift;
$self->{legend} = [@_];
}
However, from a template, I can't pass it a list, only a list reference.
[% graph.set_legend(row_names) %]
passes a list reference.
So, I have to work around it in this ugly way:
# Workaround for the fact that set_legend won't take row_names
# directly,because row_names is an array reference rather than an array.
graph.set_legend(row_names.0, row_names.1, row_names.2, row_names.3,
row_names.4, row_names.5, ...);
I've tried all sorts of things, including reading the manual and the
mailing list archives, a vmethod to return a list given a list reference
(I think TT just converts it back), and inserting $ signs all over the
place. Of course, in an ideal world set_legend() would take a list or a
list reference, but it would be good if I could fix this in my code,
because fixing it in GD::Graph would mean waiting for the next release
and getting everyone to upgrade to it.
Does anyone have any idea how I can make this happen?
Gerv
(This problem is http://bugzilla.mozilla.org/show_bug.cgi?id=185474)