#
# Creates or replaces an end of a compressed holding
#
+# If $end_holding does not share caption data with $self, results
+# will be unpredicable
+#
sub compressed_end {
my $self = shift;
my $end_holding = shift;
my %changes;
- if ($end_holding) {
+ if ($end_holding and !$end_holding->is_open_ended) {
+ if ($end_holding->is_compressed) {
+ $end_holding = $end_holding->clone->compressed_to_last;
+ }
foreach my $key (keys %{$self->fields}) {
my @values = @{$self->field_values($key)};
my @end_values = @{$end_holding->field_values($key)};
$self->fields->{$key}{HOLDINGS} = \@values;
$changes{$key} = join('-', @values);
}
- } elsif (!$self->is_open_ended) { # make open-ended if no $end_holding
+ } elsif (!$self->is_open_ended) { # make open-ended if no $end_holding (or $end_holding was open ended)
foreach my $key (keys %{$self->fields}) {
my @values = @{$self->field_values($key)};
$self->fields->{$key}{HOLDINGS} = [$values[0]];