diff --git a/doc/booker.pl b/doc/booker.pl index 58f10d2..c2aa43f 100644 --- a/doc/booker.pl +++ b/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.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 () { +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 () { } 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,") { +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 () { # 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 () { + while (<$src>) { $text[$line++] = $_; last if ($_ =~ /libtom\.org/); } - ; + <$src>; } - $inline = 0; - while () { + my $inline = 0; + while (<$src>) { next if ($_ =~ /\$Source/); next if ($_ =~ /\$Revision/); next if ($_ =~ /\$Date/); @@ -101,34 +112,38 @@ while () { $_ =~ 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 () { } # 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 () { # 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 () { } # 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 () { } # 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'); diff --git a/makefile b/makefile index 54711e8..5eddae4 100644 --- a/makefile +++ b/makefile @@ -144,7 +144,7 @@ new_file: perl dep.pl perlcritic: - perlcritic *.pl + perlcritic *.pl doc/*.pl astyle: astyle --options=astylerc $(OBJECTS:.o=.c) tommath*.h demo/*.c etc/*.c mtest/mtest.c