/[webpac]/trunk/parse_format.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/parse_format.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 40 - (hide annotations)
Sat Mar 15 21:33:36 2003 UTC (21 years ago) by dpavlin
File size: 1666 byte(s)
major de-mungling of different codepages: use same codepage inside perl
(as opposed to UTF-8) and in files on disk

1 dpavlin 10 #-------------------------------------------------------------
2     #
3     # parse_format('format',$isis_row);
4     #
5    
6     use isis_sf;
7    
8     sub parse_format {
9     my $format = shift;
10     my $row = shift;
11 dpavlin 23 my $i = shift || 0; # isis repeatable number
12 dpavlin 40 my $codepage = shift || die;
13 dpavlin 10
14     my $out;
15     my $out_swish;
16    
17     my $prefix = "";
18     if ($format =~ s/^([^\d]+)//) {
19 dpavlin 23 $prefix = $1;
20 dpavlin 10 }
21    
22     my $display;
23     my $swish;
24    
25     while ($format) {
26 dpavlin 23 #print STDERR "\n#### $format";
27 dpavlin 10 if ($format =~ s/^(\d\d\d)(\w?)//) {
28 dpavlin 23 my $isis_tmp = isis_sf($row,$1,$2,$i);
29 dpavlin 10 if ($isis_tmp) {
30 dpavlin 40 $isis_tmp = $codepage->convert($isis_tmp) if ($codepage);
31 dpavlin 10 $display .= $prefix . $isis_tmp;
32     $swish .= $isis_tmp." ";
33 dpavlin 23 #print STDERR " == $isis_tmp";
34 dpavlin 10 }
35     $prefix = "";
36 dpavlin 22 # this might be our local scpeciality -- fields 10 and 11
37     # (as opposed to 010 and 011) so they are strictly listed
38     # here
39     } elsif ($format =~ s/^(1[01])//) {
40 dpavlin 23 my $isis_tmp = isis_sf($row,$1,undef,$i);
41 dpavlin 22 if ($isis_tmp) {
42 dpavlin 40 $isis_tmp = $codepage->convert($isis_tmp) if ($codepage);
43 dpavlin 22 $display .= $prefix . $isis_tmp;
44     $swish .= $isis_tmp." ";
45     }
46     $prefix = "";
47 dpavlin 23 } elsif ($format =~ s/^mfn//i) {
48     $display .= $prefix . $row->{mfn};
49     $prefix = "";
50 dpavlin 10 } elsif ($format =~ s/^([^\d]+)(\d{0,3})/$2/) {
51 dpavlin 23 $prefix .= $1 if ($display);
52 dpavlin 10 } elsif ($format =~ s/^([^\d]+\d{0,2})//) {
53 dpavlin 23 $prefix .= $1 if ($display);
54 dpavlin 10 } elsif ($format =~ s/^(\d{1,2})//) {
55 dpavlin 23 $prefix .= $1 if ($display);
56 dpavlin 10 } else {
57     print STDERR "unparsed format: $format\n";
58     $prefix .= $format;
59     $format = "";
60     }
61     }
62     # add suffix
63     $display .= $prefix if ($display);
64    
65     return ($swish,$display);
66     }
67    
68     #-------------------------------------------------------------
69     1;

Properties

Name Value
cvs2svn:cvs-rev 1.4

  ViewVC Help
Powered by ViewVC 1.1.26