From b36fe27079e1bfb374dde0edec3752f1aa0f6e74 Mon Sep 17 00:00:00 2001 From: "hieda_kyuko@hpr" <ugo58956@protonmail.com> Date: Wed, 7 May 2025 15:20:34 +0200 Subject: [PATCH] Fix last index & reference --- src/oud2_parser.pl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/oud2_parser.pl b/src/oud2_parser.pl index ac8c7fd..89d0f32 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; -- GitLab