+
+ }
+
+ # store data for page-by-page repeatable fields
+ if ($iterate_by_page) {
+ sub iterate_fld($$$$$$) {
+ my ($cache,$what,$field,$page,$data,$append) = @_;
+ return if (!$data);
+
+ my $ldel = $page_line_delimiter;
+ $ldel = " " if ($append);
+#print STDERR "line delimiter: ",Dumper($ldel) if ($ldel);
+ if (! $cache->{$what}->{$field}->[$page]) {
+ $cache->{$what}->{$field}->[$page] = $data;
+ } else {
+ $cache->{$what}->{$field}->[$page] .= $ldel.$data;
+ }
+ }
+
+ if ($display_data) {
+ iterate_fld($cache,'display_data',$field,$page,$display_data,$x->{append});
+ }
+ $display_data = "";
+ if ($swish_data) {
+ iterate_fld($cache,'swish_data',$field,$page,$swish_data,$x->{append});
+ $swish_data = "";
+ }
+ if ($swish_exact_data) {
+ iterate_fld($cache,'swish_exact_data',$field,$page,$swish_exact_data,$x->{append});
+ $swish_exact_data = "";
+ }
+
+ if ($idisplay) {
+ my $ldel=$page_line_delimiter;
+ my @index_data;
+ if ($cache->{index_data}->{$field}->[$page]) {
+
+ @index_data = @{$cache->{index_data}->{$field}->[$page]};
+ }
+ if ($x->{append}) {
+ if (@index_data) {
+ $index_data[$#index_data] .= $idisplay;
+ } else {
+ push @index_data, $idisplay;
+ }
+ } else {
+ push @index_data, $idisplay;
+ }
+ $idisplay = "";
+ @{$cache->{index_data}->{$field}->[$page]} = @index_data;