[LON-CAPA-cvs] cvs: doc /help rebuildLabelHash.pl
albertel
lon-capa-cvs-allow@mail.lon-capa.org
Tue, 07 Aug 2007 21:40:40 -0000
albertel Tue Aug 7 17:40:40 2007 EDT
Modified files:
/doc/help rebuildLabelHash.pl
Log:
- insert checking of \ref{} to make sure referenced help file exists
Index: doc/help/rebuildLabelHash.pl
diff -u doc/help/rebuildLabelHash.pl:1.7 doc/help/rebuildLabelHash.pl:1.8
--- doc/help/rebuildLabelHash.pl:1.7 Tue Aug 7 17:02:58 2007
+++ doc/help/rebuildLabelHash.pl Tue Aug 7 17:40:40 2007
@@ -50,17 +50,16 @@
$file = substr($file, index($file, "/") + 1);
}
my $contents = join("\n", <F>);
- my $label;
my $found=0;
my $found_me=0;
# Search for labels, of the form '\label{labelname}'
- foreach $label ( $contents =~ /\\label\{([^\}]*)\}/g ) {
+ foreach my $label ( $contents =~ /\\label\{([^\}]*)\}/g ) {
$found = 1;
if ($file eq "$label.tex") {
$found_me = 1;
}
- if (exists $fragmentLabels{$label} ) {
+ if (exists($fragmentLabels{$label}) ) {
print("***ERROR: '$label' in both $fragmentLabels{$label} " .
"and $file. \n");
$error++;
@@ -81,8 +80,39 @@
if ($error == 0) {
print("There were no duplicate labels. Database rebuilt.\n");
} else {
- print("There were $error errors. You must correct the duplicate labels.\n");
+ print("There were $error errors. You must correct the labels.\n");
+ exit(-1);
+}
+
+my $found_ref=0;
+foreach my $file ( glob("*.tex") ) {
+ open(F, $file);
+ if ( index($file, "/") != "/" ) {
+ $file = substr($file, index($file, "/") + 1);
+ }
+ my $contents = join("\n", <F>);
+ my $label;
+
+
+ # Search for labels, of the form '\label{labelname}'
+ foreach my $ref ( $contents =~ /\\ref\{([^\}]*)\}/g ) {
+ if (!exists($fragmentLabels{$ref})
+ && $ref ne 'course.manual.access.hlp'
+ && $ref ne 'author.manual.access.hlp') {
+ $error++;
+ print("***ERROR: ref $ref in $file doesn't exist in label hash. \n");
+ } else {
+ $found_ref++;
+ }
+ }
+}
+
+if ($error == 0) {
+ print("There were no dangling references. $found_ref were checked.\n");
+} else {
+ print("There were $error errors. You must correct the dangling references.\n");
exit(-1);
}
+
untie(%fragmentLabels);