fixed parser, added support for 'mfn' field
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 23 Feb 2003 06:50:55 +0000 (06:50 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 23 Feb 2003 06:50:55 +0000 (06:50 +0000)
git-svn-id: file:///home/dpavlin/private/svn/webpac/trunk@23 13eb9ef6-21d5-0310-b721-a9d68796d827

parse_format.pm

index 06462d8..f8dd6a3 100644 (file)
@@ -8,43 +8,48 @@ use isis_sf;
 sub parse_format {
        my $format = shift;
        my $row = shift;
+       my $i = shift || 0;     # isis repeatable number
 
        my $out;
        my $out_swish;
 
        my $prefix = "";
        if ($format =~ s/^([^\d]+)//) {
-               $prefix = "pre: $1";
+               $prefix = $1;
        }
 
        my $display;
        my $swish;
 
        while ($format) {
-#print STDERR "#### $format\n";
+#print STDERR "\n#### $format";
                if ($format =~ s/^(\d\d\d)(\w?)//) {
-                       my $isis_tmp = isis_sf($row,$1,$2);
+                       my $isis_tmp = isis_sf($row,$1,$2,$i);
                        if ($isis_tmp) {
                                $display .= $prefix . $isis_tmp;
                                $swish .= $isis_tmp." ";
+#print STDERR " == $isis_tmp";
                        }
                        $prefix = "";
                # this might be our local scpeciality -- fields 10 and 11
                # (as opposed to 010 and 011) so they are strictly listed
                # here
                } elsif ($format =~ s/^(1[01])//) {
-                       my $isis_tmp = isis_sf($row,$1,$2);
+                       my $isis_tmp = isis_sf($row,$1,undef,$i);
                        if ($isis_tmp) {
                                $display .= $prefix . $isis_tmp;
                                $swish .= $isis_tmp." ";
                        }
                        $prefix = "";
+               } elsif ($format =~ s/^mfn//i) {
+                       $display .= $prefix . $row->{mfn};
+                       $prefix = "";
                } elsif ($format =~ s/^([^\d]+)(\d{0,3})/$2/) {
-                       $prefix .= $1;
+                       $prefix .= $1 if ($display);
                } elsif ($format =~ s/^([^\d]+\d{0,2})//) {
-                       $prefix .= $1;
+                       $prefix .= $1 if ($display);
                } elsif ($format =~ s/^(\d{1,2})//) {
-                       $prefix .= $1;
+                       $prefix .= $1 if ($display);
                } else {
                        print STDERR "unparsed format: $format\n";
                        $prefix .= $format;