--- trunk/lib/WebPAC/Output/TT.pm 2005/07/24 15:35:46 33 +++ trunk/lib/WebPAC/Output/TT.pm 2005/11/14 16:12:01 43 @@ -6,6 +6,7 @@ use base qw/WebPAC::Common/; use Template; +use List::Util qw/first/; use Data::Dumper; =head1 NAME @@ -85,6 +86,52 @@ $log->logconfess("need $a") unless ($args->{$a}); } + # filter to return value from @ds + + sub tt_filter_type { + my ($data,$type) = @_; + + die "no data?" unless ($data); + $type ||= 'display'; + + my $default_delimiter = { + 'display' => '¶
', + 'index' => '\n', + }; + + return sub { + +print "### data = ",Dumper($data); + + my ($name,$join) = @_; + + die "no data array" unless ($data->{'data'} && ref($data->{'data'}) eq 'ARRAY'); + +print "### name, join = ",Dumper($name); + + my $item = first { $_->{'name'} eq $name } @{ $data->{'data'} }; + + return unless($item); + +print "### item = ",Dumper($item); + + my $v = $item->{$type} || return; + + if (ref($v) eq 'ARRAY') { + if ($#{$v} == 0) { + $v = $v->[0]; + } else { + $join = $default_delimiter->{$type} unless defined($join); + $v = join($join, @{$v}); + } + } +print "### v = $v\n"; + return $v; + } + } + + $args->{'d'} = tt_filter_type($args, 'display'); + my $out; $self->{'tt'}->process(