Merge pull request #96 from fperrad/20171208_perlcritic
run perlcritic against booker.pl
This commit is contained in:
		
						commit
						f3fa95e402
					
				
							
								
								
									
										127
									
								
								doc/booker.pl
									
									
									
									
									
								
							
							
						
						
									
										127
									
								
								doc/booker.pl
									
									
									
									
									
								
							@ -9,21 +9,28 @@
 | 
			
		||||
#This preprocessor will then open "file" and insert it as a verbatim copy.
 | 
			
		||||
#
 | 
			
		||||
#Tom St Denis
 | 
			
		||||
use strict;
 | 
			
		||||
 | 
			
		||||
#get graphics type
 | 
			
		||||
my $graph;
 | 
			
		||||
if (shift =~ /PDF/) {
 | 
			
		||||
   $graph = "";
 | 
			
		||||
} else {
 | 
			
		||||
   $graph = ".ps";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
open(IN,"<tommath.src") or die "Can't open source file";
 | 
			
		||||
open(OUT,">tommath.tex") or die "Can't open destination file";
 | 
			
		||||
open(my $in, '<', 'tommath.src') or die "Can't open source file";
 | 
			
		||||
open(my $out, '>', 'tommath.tex') or die "Can't open destination file";
 | 
			
		||||
 | 
			
		||||
print "Scanning for sections\n";
 | 
			
		||||
$chapter = $section = $subsection = 0;
 | 
			
		||||
$x = 0;
 | 
			
		||||
while (<IN>) {
 | 
			
		||||
my $chapter = 0;
 | 
			
		||||
my $section = 0;
 | 
			
		||||
my $subsection = 0;
 | 
			
		||||
my $x = 0;
 | 
			
		||||
my %index1;
 | 
			
		||||
my %index2;
 | 
			
		||||
my %index3;
 | 
			
		||||
while (<$in>) {
 | 
			
		||||
   print ".";
 | 
			
		||||
   if (!(++$x % 80)) { print "\n"; }
 | 
			
		||||
   #update the headings
 | 
			
		||||
@ -40,25 +47,29 @@ while (<IN>) {
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if ($_ =~ m/MARK/) {
 | 
			
		||||
      @m = split(",",$_);
 | 
			
		||||
      chomp(@m[1]);
 | 
			
		||||
      $index1{@m[1]} = $chapter;
 | 
			
		||||
      $index2{@m[1]} = $section;
 | 
			
		||||
      $index3{@m[1]} = $subsection;
 | 
			
		||||
      my @m = split ',', $_;
 | 
			
		||||
      chomp $m[1];
 | 
			
		||||
      $index1{$m[1]} = $chapter;
 | 
			
		||||
      $index2{$m[1]} = $section;
 | 
			
		||||
      $index3{$m[1]} = $subsection;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
close(IN);
 | 
			
		||||
close $in;
 | 
			
		||||
 | 
			
		||||
open(IN,"<tommath.src") or die "Can't open source file";
 | 
			
		||||
$readline = $wroteline = 0;
 | 
			
		||||
$srcline = 0;
 | 
			
		||||
open($in, '<', 'tommath.src') or die "Can't open source file";
 | 
			
		||||
my $readline = 0;
 | 
			
		||||
my $wroteline = 0;
 | 
			
		||||
my $srcline = 0;
 | 
			
		||||
my $totlines;
 | 
			
		||||
my @text;
 | 
			
		||||
 | 
			
		||||
while (<IN>) {
 | 
			
		||||
while (<$in>) {
 | 
			
		||||
   ++$readline;
 | 
			
		||||
   ++$srcline;
 | 
			
		||||
 | 
			
		||||
   if ($_ =~ m/MARK/) {
 | 
			
		||||
   } elsif ($_ =~ m/EXAM/ || $_ =~ m/LIST/) {
 | 
			
		||||
      my $skipheader;
 | 
			
		||||
      if ($_ =~ m/EXAM/) {
 | 
			
		||||
         $skipheader = 1;
 | 
			
		||||
      } else {
 | 
			
		||||
@ -67,28 +78,28 @@ while (<IN>) {
 | 
			
		||||
 | 
			
		||||
      # EXAM,file
 | 
			
		||||
      chomp($_);
 | 
			
		||||
      @m = split(",",$_);
 | 
			
		||||
      open(SRC,"<../$m[1]") or die "Error:$srcline:Can't open source file $m[1]";
 | 
			
		||||
      my @m = split ',', $_;
 | 
			
		||||
      open(my $src, '<', "../$m[1]") or die "Error:$srcline:Can't open source file $m[1]";
 | 
			
		||||
 | 
			
		||||
      print "$srcline:Inserting $m[1]:";
 | 
			
		||||
 | 
			
		||||
      $line = 0;
 | 
			
		||||
      $tmp = $m[1];
 | 
			
		||||
      my $line = 0;
 | 
			
		||||
      my $tmp = $m[1];
 | 
			
		||||
      $tmp =~ s/_/"\\_"/ge;
 | 
			
		||||
      print OUT "\\vspace{+3mm}\\begin{small}\n\\hspace{-5.1mm}{\\bf File}: $tmp\n\\vspace{-3mm}\n\\begin{alltt}\n";
 | 
			
		||||
      print {$out} "\\vspace{+3mm}\\begin{small}\n\\hspace{-5.1mm}{\\bf File}: $tmp\n\\vspace{-3mm}\n\\begin{alltt}\n";
 | 
			
		||||
      $wroteline += 5;
 | 
			
		||||
 | 
			
		||||
      if ($skipheader == 1) {
 | 
			
		||||
         # scan till next end of comment, e.g. skip license
 | 
			
		||||
         while (<SRC>) {
 | 
			
		||||
         while (<$src>) {
 | 
			
		||||
            $text[$line++] = $_;
 | 
			
		||||
            last if ($_ =~ /libtom\.org/);
 | 
			
		||||
         }
 | 
			
		||||
         <SRC>;
 | 
			
		||||
         <$src>;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      $inline = 0;
 | 
			
		||||
      while (<SRC>) {
 | 
			
		||||
      my $inline = 0;
 | 
			
		||||
      while (<$src>) {
 | 
			
		||||
      next if ($_ =~ /\$Source/);
 | 
			
		||||
      next if ($_ =~ /\$Revision/);
 | 
			
		||||
      next if ($_ =~ /\$Date/);
 | 
			
		||||
@ -101,34 +112,38 @@ while (<IN>) {
 | 
			
		||||
         $_ =~ s/\\/'\symbol{92}'/ge;
 | 
			
		||||
         $_ =~ s/\^/"\\"/ge;
 | 
			
		||||
 | 
			
		||||
         printf OUT ("%03d   ", $line);
 | 
			
		||||
         printf {$out} ("%03d   ", $line);
 | 
			
		||||
         for ($x = 0; $x < length($_); $x++) {
 | 
			
		||||
             print OUT chr(vec($_, $x, 8));
 | 
			
		||||
             print {$out} chr(vec($_, $x, 8));
 | 
			
		||||
             if ($x == 75) {
 | 
			
		||||
                 print OUT "\n      ";
 | 
			
		||||
                 print {$out} "\n      ";
 | 
			
		||||
                 ++$wroteline;
 | 
			
		||||
             }
 | 
			
		||||
         }
 | 
			
		||||
         print OUT "\n";
 | 
			
		||||
         print {$out} "\n";
 | 
			
		||||
         ++$wroteline;
 | 
			
		||||
      }
 | 
			
		||||
      $totlines = $line;
 | 
			
		||||
      print OUT "\\end{alltt}\n\\end{small}\n";
 | 
			
		||||
      close(SRC);
 | 
			
		||||
      print {$out} "\\end{alltt}\n\\end{small}\n";
 | 
			
		||||
      close $src;
 | 
			
		||||
      print "$inline lines\n";
 | 
			
		||||
      $wroteline += 2;
 | 
			
		||||
   } elsif ($_ =~ m/@\d+,.+@/) {
 | 
			
		||||
     # line contains [number,text]
 | 
			
		||||
     # e.g. @14,for (ix = 0)@
 | 
			
		||||
     $txt = $_;
 | 
			
		||||
     my $txt = $_;
 | 
			
		||||
     while ($txt =~ m/@\d+,.+@/) {
 | 
			
		||||
        @m = split("@",$txt);      # splits into text, one, two
 | 
			
		||||
        @parms = split(",",$m[1]);  # splits one,two into two elements
 | 
			
		||||
        my @m = split '@', $txt;        # splits into text, one, two
 | 
			
		||||
        my @parms = split ',', $m[1];   # splits one,two into two elements
 | 
			
		||||
 | 
			
		||||
        # now search from $parms[0] down for $parms[1]
 | 
			
		||||
        $found1 = 0;
 | 
			
		||||
        $found2 = 0;
 | 
			
		||||
        for ($i = $parms[0]; $i < $totlines && $found1 == 0; $i++) {
 | 
			
		||||
        my $found;
 | 
			
		||||
        my $found1 = 0;
 | 
			
		||||
        my $found2 = 0;
 | 
			
		||||
        my $foundline;
 | 
			
		||||
        my $foundline1;
 | 
			
		||||
        my $foundline2;
 | 
			
		||||
        for (my $i = $parms[0]; $i < $totlines && $found1 == 0; $i++) {
 | 
			
		||||
           if ($text[$i] =~ m/\Q$parms[1]\E/) {
 | 
			
		||||
              $foundline1 = $i + 1;
 | 
			
		||||
              $found1 = 1;
 | 
			
		||||
@ -136,7 +151,7 @@ while (<IN>) {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # now search backwards
 | 
			
		||||
        for ($i = $parms[0] - 1; $i >= 0 && $found2 == 0; $i--) {
 | 
			
		||||
        for (my $i = $parms[0] - 1; $i >= 0 && $found2 == 0; $i--) {
 | 
			
		||||
           if ($text[$i] =~ m/\Q$parms[1]\E/) {
 | 
			
		||||
              $foundline2 = $i + 1;
 | 
			
		||||
              $found2 = 1;
 | 
			
		||||
@ -163,7 +178,7 @@ while (<IN>) {
 | 
			
		||||
 | 
			
		||||
        # if found replace
 | 
			
		||||
        if ($found == 1) {
 | 
			
		||||
           $delta = $parms[0] - $foundline;
 | 
			
		||||
           my $delta = $parms[0] - $foundline;
 | 
			
		||||
           print "Found replacement tag for \"$parms[1]\" on line $srcline which refers to line $foundline (delta $delta)\n";
 | 
			
		||||
           $_ =~ s/@\Q$m[1]\E@/$foundline/;
 | 
			
		||||
        } else {
 | 
			
		||||
@ -171,32 +186,31 @@ while (<IN>) {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # remake the rest of the line
 | 
			
		||||
        $cnt = @m;
 | 
			
		||||
        $txt = "";
 | 
			
		||||
        for ($i = 2; $i < $cnt; $i++) {
 | 
			
		||||
        for (my $i = 2; $i < scalar(@m); $i++) {
 | 
			
		||||
            $txt = $txt . $m[$i] . "@";
 | 
			
		||||
        }
 | 
			
		||||
     }
 | 
			
		||||
     print OUT $_;
 | 
			
		||||
     print {$out} $_;
 | 
			
		||||
     ++$wroteline;
 | 
			
		||||
   } elsif ($_ =~ /~.+~/) {
 | 
			
		||||
      # line contains a ~text~ pair used to refer to indexing :-)
 | 
			
		||||
      $txt = $_;
 | 
			
		||||
      my $txt = $_;
 | 
			
		||||
      while ($txt =~ /~.+~/) {
 | 
			
		||||
         @m = split("~", $txt);
 | 
			
		||||
         my @m = split '~', $txt;
 | 
			
		||||
 | 
			
		||||
         # word is the second position
 | 
			
		||||
         $word = @m[1];
 | 
			
		||||
         $a = $index1{$word};
 | 
			
		||||
         $b = $index2{$word};
 | 
			
		||||
         $c = $index3{$word};
 | 
			
		||||
         my $word = $m[1];
 | 
			
		||||
         my $a = $index1{$word};
 | 
			
		||||
         my $b = $index2{$word};
 | 
			
		||||
         my $c = $index3{$word};
 | 
			
		||||
 | 
			
		||||
         # if chapter (a) is zero it wasn't found
 | 
			
		||||
         if ($a == 0) {
 | 
			
		||||
            print "ERROR: the tag \"$word\" on line $srcline was not found previously marked.\n";
 | 
			
		||||
         } else {
 | 
			
		||||
            # format the tag as x, x.y or x.y.z depending on the values
 | 
			
		||||
            $str = $a;
 | 
			
		||||
            my $str = $a;
 | 
			
		||||
            $str = $str . ".$b" if ($b != 0);
 | 
			
		||||
            $str = $str . ".$c" if ($c != 0);
 | 
			
		||||
 | 
			
		||||
@ -239,29 +253,28 @@ while (<IN>) {
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         # remake rest of the line
 | 
			
		||||
         $cnt = @m;
 | 
			
		||||
         $txt = "";
 | 
			
		||||
         for ($i = 2; $i < $cnt; $i++) {
 | 
			
		||||
         for (my $i = 2; $i < scalar(@m); $i++) {
 | 
			
		||||
             $txt = $txt . $m[$i] . "~";
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
      print OUT $_;
 | 
			
		||||
      print {$out} $_;
 | 
			
		||||
      ++$wroteline;
 | 
			
		||||
   } elsif ($_ =~ m/FIGU/) {
 | 
			
		||||
      # FIGU,file,caption
 | 
			
		||||
      chomp($_);
 | 
			
		||||
      @m = split(",", $_);
 | 
			
		||||
      print OUT "\\begin{center}\n\\begin{figure}[h]\n\\includegraphics{pics/$m[1]$graph}\n";
 | 
			
		||||
      print OUT "\\caption{$m[2]}\n\\label{pic:$m[1]}\n\\end{figure}\n\\end{center}\n";
 | 
			
		||||
      my @m = split ',', $_;
 | 
			
		||||
      print {$out} "\\begin{center}\n\\begin{figure}[h]\n\\includegraphics{pics/$m[1]$graph}\n";
 | 
			
		||||
      print {$out} "\\caption{$m[2]}\n\\label{pic:$m[1]}\n\\end{figure}\n\\end{center}\n";
 | 
			
		||||
      $wroteline += 4;
 | 
			
		||||
   } else {
 | 
			
		||||
      print OUT $_;
 | 
			
		||||
      print {$out} $_;
 | 
			
		||||
      ++$wroteline;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
print "Read $readline lines, wrote $wroteline lines\n";
 | 
			
		||||
 | 
			
		||||
close (OUT);
 | 
			
		||||
close (IN);
 | 
			
		||||
close $out;
 | 
			
		||||
close $in;
 | 
			
		||||
 | 
			
		||||
system('perl -pli -e "s/\s*$//" tommath.tex');
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user