On Mon, 30 Apr 2007 [EMAIL PROTECTED] wrote:

> On Tue, 10 Apr 2007 [EMAIL PROTECTED] wrote:
>
> > I've created a .Rd file (below), then converted that to .sgml using
> >     R CMD Rdconv --type=Ssgm combn.Rd  > combn.sgml
> > The output (shown below) is missing some of the sections:
> >     arguments
> >     seealso
> >     examples
> > If instead I convert to .d (below), the same sections are missing,
> > and the "note" section is included but without the necessary newline.
>
> The underlying problem was that there were some unmatched open-braces.
> (or 'brackets'?) The attached patch to share/perl/R/Rdconv.pm:mark_brackets()
> seems to detect unmatched open and close braces and throw an error:
>
>    % R CMD INSTALL -l /tmp/Rlib timhPackage
>    * Installing *source* package 'timhPackage' ...
>    ** help
>     >>> Building/Updating help pages for package 'timhPackage'
>         Formats: text html latex example
>    Rdconv(): mismatched braces in help file timh.Rd on or after line 12
>    ERROR: building help failed for package 'timhPackage'
>    ** Removing '/tmp/Rlib/timhPackage'
>    ** Restoring previous '/tmp/Rlib/timhPackage'
>
> The code to report the line number doesn't work quite right
> since any "% comment" lines in the Rd file have been removed
> from $complete_text by the time we get here.  I fudged by
> putting 'on or after line XXX' in the error message.

The following patch adds a little more information (the
name of the \tag or whether it is an unmatched { or })
to the error message, so Tim's example results in

    % R CMD INSTALL -l /tmp/Rlib timhPackage
    * Installing *source* package 'timhPackage' ...
    ** help
     >>> Building/Updating help pages for package 'timhPackage'
         Formats: text html latex example
    Rdconv(): mismatched braces ('\arguments{') in help file timh.Rd on or 
after line 12
    ERROR: building help failed for package 'timhPackage'
    ** Removing '/tmp/Rlib/timhPackage'
    ** Restoring previous '/tmp/Rlib/timhPackage'


*** Rdconv.pm~  2007-03-29 19:05:08.000000000 -0700
--- Rdconv.pm   2007-05-01 10:28:55.000000000 -0700
***************
*** 254,259 ****
--- 254,275 ----
        $complete_text =~ s/{([^{}]*)}/$id$1$id/s;
        print STDERR "." if $debug;
      }
+     # Any remaining brackets must be unmatched ones, hence report error.
+     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\')" ;
+         if ($complete_text =~ /(\\\w+{)/) {
+               $extra_info = "(\'$1\')" ;
+       }
+         foreach my $line (split /\n/, $complete_text) {
+             $badlineno++;
+             last if ($line =~ /[{}]/) ;
+         }
+         die "Rdconv(): mismatched braces $extra_info in help file $Rdname on 
or after line $badlineno\n" ;
+     }
  }

  sub unmark_brackets {

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to