--- trunk/lib/WebPAC/Output/TT.pm 2005/11/14 16:11:40 42 +++ trunk/lib/WebPAC/Output/TT.pm 2005/11/14 16:12:01 43 @@ -88,33 +88,49 @@ # filter to return value from @ds - sub tt_filter_d { + sub tt_filter_type { + my ($data,$type) = @_; + + die "no data?" unless ($data); + $type ||= 'display'; - my ($name,$join) = @_; + my $default_delimiter = { + 'display' => '¶
', + 'index' => '\n', + }; -print "### name = ",Dumper($name); + return sub { - my $item = first { $_->{'name'} eq $name } @{ $args->{'data'} }; +print "### data = ",Dumper($data); - return unless($item); + 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->{'display'} || return; + my $v = $item->{$type} || return; - if (ref($v) eq 'ARRAY') { - if ($#{$v} == 0) { - $v = $v->[0]; - } else { - $join = '¶
' unless defined($join); - $v = join($join, @{$v}); + 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; + return $v; + } } - $args->{'d'} = \&tt_filter_d; + $args->{'d'} = tt_filter_type($args, 'display'); my $out;