|
Lines 160-166
sub merge_records {
Link Here
|
| 160 |
my %keys_index = map { $_ => undef } (keys %{$a}, keys %{$b}); |
160 |
my %keys_index = map { $_ => undef } (keys %{$a}, keys %{$b}); |
| 161 |
foreach my $key (keys %keys_index) { |
161 |
foreach my $key (keys %keys_index) { |
| 162 |
if ($a->{$key} && $b->{$key}) { |
162 |
if ($a->{$key} && $b->{$key}) { |
| 163 |
push @intersecting, $a->{$key}; |
163 |
push @intersecting, [$a->{$key}, $b->{$key}]; |
| 164 |
} |
164 |
} |
| 165 |
elsif ($a->{$key}) { |
165 |
elsif ($a->{$key}) { |
| 166 |
push @removed, $a->{$key}; |
166 |
push @removed, $a->{$key}; |
|
Lines 254-260
sub merge_records {
Link Here
|
| 254 |
# First add common fields (intersection) |
254 |
# First add common fields (intersection) |
| 255 |
# Unchanged |
255 |
# Unchanged |
| 256 |
if (@{$common_fields}) { |
256 |
if (@{$common_fields}) { |
| 257 |
push @merged_fields, @{$common_fields}; |
257 |
if( |
|
|
258 |
$rule->{delete}->{allow} && |
| 259 |
$rule->{add}->{allow} && ( |
| 260 |
@{$common_fields} == 1 || ( |
| 261 |
$rule->{append}->{allow} && |
| 262 |
$rule->{remove}->{allow} |
| 263 |
) |
| 264 |
) |
| 265 |
) { |
| 266 |
# If overwritable apply possible subfield order |
| 267 |
# changes from incoming fields |
| 268 |
push @merged_fields, map { $_->[1] } @{$common_fields}; |
| 269 |
} |
| 270 |
else { |
| 271 |
# else keep existing subfield order |
| 272 |
push @merged_fields, map { $_->[0] } @{$common_fields}; |
| 273 |
} |
| 258 |
} |
274 |
} |
| 259 |
# Removed |
275 |
# Removed |
| 260 |
if (@{$current_fields_only}) { |
276 |
if (@{$current_fields_only}) { |
| 261 |
- |
|
|