88 |
|
|
89 |
# filter to return value from @ds |
# filter to return value from @ds |
90 |
|
|
91 |
sub tt_filter_d { |
sub tt_filter_type { |
92 |
|
my ($data,$type) = @_; |
93 |
|
|
94 |
|
die "no data?" unless ($data); |
95 |
|
$type ||= 'display'; |
96 |
|
|
97 |
my ($name,$join) = @_; |
my $default_delimiter = { |
98 |
|
'display' => '¶<br/>', |
99 |
|
'index' => '\n', |
100 |
|
}; |
101 |
|
|
102 |
print "### name = ",Dumper($name); |
return sub { |
103 |
|
|
104 |
my $item = first { $_->{'name'} eq $name } @{ $args->{'data'} }; |
print "### data = ",Dumper($data); |
105 |
|
|
106 |
return unless($item); |
my ($name,$join) = @_; |
107 |
|
|
108 |
|
die "no data array" unless ($data->{'data'} && ref($data->{'data'}) eq 'ARRAY'); |
109 |
|
|
110 |
|
print "### name, join = ",Dumper($name); |
111 |
|
|
112 |
|
my $item = first { $_->{'name'} eq $name } @{ $data->{'data'} }; |
113 |
|
|
114 |
|
return unless($item); |
115 |
|
|
116 |
print "### item = ",Dumper($item); |
print "### item = ",Dumper($item); |
117 |
|
|
118 |
my $v = $item->{'display'} || return; |
my $v = $item->{$type} || return; |
119 |
|
|
120 |
if (ref($v) eq 'ARRAY') { |
if (ref($v) eq 'ARRAY') { |
121 |
if ($#{$v} == 0) { |
if ($#{$v} == 0) { |
122 |
$v = $v->[0]; |
$v = $v->[0]; |
123 |
} else { |
} else { |
124 |
$join = '¶<br/>' unless defined($join); |
$join = $default_delimiter->{$type} unless defined($join); |
125 |
$v = join($join, @{$v}); |
$v = join($join, @{$v}); |
126 |
|
} |
127 |
} |
} |
|
} |
|
128 |
print "### v = $v\n"; |
print "### v = $v\n"; |
129 |
return $v; |
return $v; |
130 |
|
} |
131 |
} |
} |
|
$args->{'d'} = \&tt_filter_d; |
|
132 |
|
|
133 |
|
$args->{'d'} = tt_filter_type($args, 'display'); |
134 |
|
|
135 |
my $out; |
my $out; |
136 |
|
|