
| Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Version/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/Version/Directory.pm |
package Version::Directory;
use strict;
sub predecessor { 1; }
sub parts { 1; }
sub construct { 1; }
#********************************************************
# Merges object to another object
#
sub parts {
my $self = shift;
$self->{'
sub merge {
my $self = shift; #
my $main = shift; # Main-Branch
# If no changes were made in main obj, dev obj replaces it
if ( $self->predecessor()->equal($main) ) ) {
return($self);
}
# If no changes were made in dev obj, main obj remains
elsif ( $self->predecessor()->equal($self) ) ) {
return($main);
}
# Divide main obj and self obj in parts and merge the parts
# Return value of the parts function is a hash with
# keys: names of the object, values: objects
my $parts_dev = $self->parts(); # List
my $parts_main = $main->parts();
# If main or dev obj is atomic, merge manually
if (!$parts_dev or !$parts_main) {
return( [$self,$main] );
}
$merge_result = {}; # Here the new merged parts take place
foreach $name (keys %$parts_dev) {
if ($parts_main->{$name}) {
$merge_result->{$name} = $parts_dev->{$name}->merge(
$parts_main->{$name});
);
delete ($parts_dev->{$name});
delete ($parts_main->{$name});
} else {
$merge_result->{$name} = $parts_dev->{$name};
}
}
return($self->construct($merge_result));
}
#*******************************************************************
1;