[LON-CAPA-cvs] cvs: doc /help rebuildLabelHash.pl
albertel
lon-capa-cvs-allow@mail.lon-capa.org
Fri, 24 Aug 2007 23:50:28 -0000
albertel Fri Aug 24 19:50:28 2007 EDT
Modified files:
/doc/help rebuildLabelHash.pl
Log:
- validate the manual <file refs
Index: doc/help/rebuildLabelHash.pl
diff -u doc/help/rebuildLabelHash.pl:1.9 doc/help/rebuildLabelHash.pl:1.10
--- doc/help/rebuildLabelHash.pl:1.9 Tue Aug 7 18:46:20 2007
+++ doc/help/rebuildLabelHash.pl Fri Aug 24 19:50:28 2007
@@ -31,6 +31,7 @@
use GDBM_File;
use File::Spec;
+my $path = '../../../../../doc/help';
# I had to chdir, because neither glob nor bsd_glob accept globs
# with ".." in them... sucky.
chdir("../../loncom/html/adm/help/");
@@ -86,19 +87,20 @@
my $found_ref=0;
foreach my $file ( glob("*.tex") ) {
- open(F, $file);
+ open(my $fh , '<', $file);
if ( index($file, "/") != "/" ) {
$file = substr($file, index($file, "/") + 1);
}
my $contents;
- foreach my $line (<F>) {
+ foreach my $line (<$fh>) {
next if ($line =~ /^%/);
$contents .= $line;
}
my $label;
- # Search for labels, of the form '\label{labelname}'
+ # Search for references, of the form '\ref{labelname}', and whether
+ # we have logged the associated \label before
foreach my $ref ( $contents =~ /\\ref\{([^\}]*)\}/g ) {
if (!exists($fragmentLabels{$ref})
&& $ref ne 'course.manual.access.hlp'
@@ -111,6 +113,25 @@
}
}
+use HTML::TokeParser;
+foreach my $manual ('course.manual.texxml','author.manual.texxml') {
+ my $p = HTML::TokeParser->new($path.'/'.$manual);
+ if (!-e $path.'/'.$manual) {
+ $error++;
+ print("***ERROR: can't find manual $manual \n");
+ }
+ while (my $token = $p->get_token()) {
+ if ($token->[0] eq 'S' && $token->[1] eq 'file') {
+ my $ref = $token->[2]{'name'};
+ $ref =~ s/\.tex//;
+ if (!exists($fragmentLabels{$ref})) {
+ $error++;
+ print("***ERROR: ref $ref in $manual doesn't exist in label hash. \n");
+ }
+ }
+ }
+}
+
if ($error == 0) {
print("There were no dangling references. $found_ref were checked.\n");
} else {