diff --git a/src/oud2_parser.pl b/src/oud2_parser.pl index ac8c7fdf7535d6f6d484c13575c7036f1588f28e..89d0f3292a4e7f4778542e923333ad22cb069177 100644 --- a/src/oud2_parser.pl +++ b/src/oud2_parser.pl @@ -247,7 +247,7 @@ foreach my $file (@trains) $frame{'id'} = $basename; Frame::frame_info \%frame; - $master{$basename} = \%frame; + $master{'rosen'}{$basename} = \%frame; close $dia_file; } @@ -261,13 +261,14 @@ foreach my $file (@trains) # > maybe use a null footpath? # TODO overall, find more generic criteria for matching two similar stations my @master_ekis; -foreach my $frame (values %master) +foreach my $frame (values %{ $master{'rosen'} }) { my @old_ekis = @{ $frame->{'eki'} }; my @new_ekis; + my @new_refs; my $index = 0; my $update_index = 1; - for (my $i = 0; $i < $#old_ekis; $i++) + for (my $i = 0; $i <= $#old_ekis; $i++) { $update_index = 1; @@ -308,7 +309,11 @@ foreach my $frame (values %master) if ($update_index) { $index++; } } + # Replace old station structures with references + # The order is conserved so there's no need to modify {'jikoku'} in {'dia'} + $frame->{'eki'} = \@new_ekis; + push @master_ekis, @new_ekis; } -p @master_ekis; +$master{'eki_index'} = @master_ekis;