From bill at insightful.com  Mon May  7 21:39:40 2007
From: bill at insightful.com (Bill Dunlap)
Date: Mon, 7 May 2007 12:39:40 -0700 (PDT)
Subject: [Rd] R CMD Rdconv drops sections: arguments, seealso,
 examples (PR#9649)
In-Reply-To: <Pine.LNX.4.64.0705041218490.1365@gannet.stats.ox.ac.uk>
References: <20070501174551.E7CAE5A89A@slim.kubism.ku.dk>
	<Pine.LNX.4.64.0705031144260.10593@gannet.stats.ox.ac.uk>
	<Pine.LNX.4.64.0705041218490.1365@gannet.stats.ox.ac.uk>
Message-ID: <Pine.GSO.4.56.0705071230260.988@durian.statsci.com>

On Fri, 4 May 2007, Prof Brian Ripley wrote:

> On Thu, 3 May 2007, Prof Brian Ripley wrote:
>
> > It is not clear to me that throwing an error is helpful as it would stop
> > the package installation process when all but one section in one .Rd file
> > would be useful.  But it would seem good to give a warning, and so I
> > propose that we adapt your code to do so.
>
> Doing so (now in R-devel) shows a couple of false positives (\align{{} in
> Paren.Rd is one), and rather a lot of correct warnings about excess }s
> that are not doing any harm.  So I have tuned the warnings to be less
> strident in the latter case.

That sounds good.

Here is a modification of your fix that prints a message for
problem in the Rd file, not just the first.   E.g., in an old
version of the msm package it gives
  Note: unmatched right brace in './msm/man/deltamethod.Rd' on or after line 32
  Note: unmatched right brace in './msm/man/deltamethod.Rd' on or after line 54
  Note: unmatched right brace in './msm/man/deltamethod.Rd' on or after line 55
instead of just complaining about the first one.

Index: Rdconv.pm
===================================================================
--- Rdconv.pm	(revision 41470)
+++ Rdconv.pm	(working copy)
@@ -258,24 +258,25 @@
     }
     # Any remaining brackets must be unmatched ones.
     # However, unmatched brackets are sometimes legal,
-    # (e.g. \alias{{}), so only warn.
+    # (e.g. \alias{{}), so only warn. # }match brace in comment
     if ($complete_text =~ /([{}])/s) {
         # Would like to tell which which line has unmatched { or },
         # but lines starting with % have already been removed.
         # Hence the 'on or after' in the message.
         my $badlineno = 0 ;
-	my $extra_info = "\'$1\'" ;
-        $extra_info = "\'$1\'" if $complete_text =~ /(\\\w+{)/ ;
 	foreach my $line (split /\n/, $complete_text) {
 	    $badlineno++;
-	    last if ($line =~ /[{}]/) ;
+	    if ($line =~ /([{}])/) {
+	        my $extra_info = "\'$1\'" ;
+            	$extra_info = "\'$1\'" if $line =~ /(\\\w+{)/ ; # }match brace in pattern
+	        if( $extra_info =~ /^'}'$/ ) {
+	            warn "Note: unmatched right brace in '$Rdname'".
+		        " on or after line $badlineno\n";
+	        } elsif(! ($extra_info =~ /\\alias{/) )  # }match brace in pattern
+	            { warn "Warning: unmatched brace ($extra_info) in '$Rdname'".
+		           " on or after line $badlineno\n"; }
+           }
 	}
-	if( $extra_info =~ /^'}'$/ ) {
-	    warn "Note: unmatched right brace in '$Rdname'".
-		" on or after line $badlineno\n";
-	} elsif(! ($extra_info =~ /\\alias{/) )
-	    { warn "Warning: unmatched brace ($extra_info) in '$Rdname'".
-		   " on or after line $badlineno\n"; }
     }
 }


----------------------------------------------------------------------------
Bill Dunlap
Insightful Corporation
bill at insightful dot com
360-428-8146

 "All statements in this message represent the opinions of the author and do
 not necessarily reflect Insightful Corporation policy or position."



[Rd] R CMD Rdconv drops sections: arguments, seealso, examples (PR#9649)
Bill Dunlap