[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);