MT940: Multi-Line-Varianten von Tag 86 unterstützen
authorMoritz Bunkus <m.bunkus@linet.de>
Thu, 18 Mar 2021 11:17:55 +0000 (12:17 +0100)
committerMoritz Bunkus <m.bunkus@linet.de>
Thu, 18 Mar 2021 11:33:31 +0000 (12:33 +0100)
SL/MT940.pm

index 2fbbad6..dd965de 100644 (file)
@@ -37,15 +37,25 @@ sub parse {
     }
   };
 
+  my ($active_field);
   foreach my $line (read_file($file_name)) {
     chomp $line;
     $line = Encode::decode('UTF-8', $line);
     $line =~ s{\r+}{};
     $line_number++;
 
+    my $current_field;
+    if ($line =~ m{^:(\d+[a-z]*):}i) {
+      $current_field = $1;
+      $active_field  = $1;
+    }
+
     if (@lines && ($line =~ m{^\%})) {
       $lines[-1]->[0] .= substr($line, 1);
 
+    } elsif (@lines && ($active_field eq '86') && !$current_field) {
+      $lines[-1]->[0] .= $line;
+
     } else {
       push @lines, [ $line, $line_number ];
     }