Re: [Rd] Unclosed parenthesis in grep.Rd

2018-03-05 Thread Duncan Murdoch

On 05/03/2018 11:48 AM, Etienne Sanchez wrote:

There are probably more unmatched parentheses around:

detect <- function(file) {
   text <- paste(readLines(file), collapse = "")
   nchar(gsub("[^(]", "", text)) != nchar(gsub("[^)]", "", text))
}

docs <- list.files("r-source-trunk/src/library",
pattern = "\\.Rd$",
full.names = TRUE,
recursive = TRUE)

suspicious <- docs[sapply(docs, detect)]

length(suspicious)
# [1] 114


Doing an automatic search is a good idea.  Here's a function that finds 
some errors that would be missed by yours, and gives a more informative 
report.


detect <- function(file) {
  text <- readLines(file)
  letters <- strsplit(text, "")
  line <- unlist(lapply(seq_along(letters), function(i) rep(i, 
length(letters[[i]]
  column <- unlist(lapply(seq_along(letters), function(i) 
seq_len(length(letters[[i]]

  letters <- unlist(letters)
  open <- letters == "("
  close <- letters == ")"
  sum <- cumsum(open) - cumsum(close)

  result <- FALSE
  report <- function(msg, where) {
message(msg, paste(file, line[where], column[where], sep=":"))
message(text[line[where]])
message(paste(c(rep(" ", column[where] - 1), "^"), collapse = ""))
## rstudioapi::navigateToFile(file, line[where], column[where])
  }
  if (any(sum < 0)) {
report("Extra close paren: ", match(TRUE, sum < 0))
result <- TRUE
  }
  if (sum[length(sum)] > 0) {
  	report("Extra open paren: ", length(sum) - match(TRUE, rev(sum == 
0)) + 2)

result <- TRUE
  }
}

If you use RStudio, you can uncomment the ## line to have it jump to the 
location of the suspicious entry.


Duncan Murdoch




2018-03-05 9:27 GMT+01:00 Martin Maechler :



Hugh Parsonage 
 on Mon, 5 Mar 2018 13:39:24 +1100 writes:


 > Lines 129-131: \code{grep(value = FALSE)} returns a vector
 > of the indices of the elements of \code{x} that yielded a
 > match (or not, for \code{invert = TRUE}. This will be an
 > integer vector unless the input

 > There should be a closing parenthesis after \code{invert =
 > TRUE}

Thank you, Hugh!  I've added the ')' now.
Martin

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


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



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


Re: [Rd] Unclosed parenthesis in grep.Rd

2018-03-05 Thread Etienne Sanchez
There are probably more unmatched parentheses around:

detect <- function(file) {
  text <- paste(readLines(file), collapse = "")
  nchar(gsub("[^(]", "", text)) != nchar(gsub("[^)]", "", text))
}

docs <- list.files("r-source-trunk/src/library",
   pattern = "\\.Rd$",
   full.names = TRUE,
   recursive = TRUE)

suspicious <- docs[sapply(docs, detect)]

length(suspicious)
# [1] 114


2018-03-05 9:27 GMT+01:00 Martin Maechler :
>
> > Hugh Parsonage 
> > on Mon, 5 Mar 2018 13:39:24 +1100 writes:
>
> > Lines 129-131: \code{grep(value = FALSE)} returns a vector
> > of the indices of the elements of \code{x} that yielded a
> > match (or not, for \code{invert = TRUE}. This will be an
> > integer vector unless the input
>
> > There should be a closing parenthesis after \code{invert =
> > TRUE}
>
> Thank you, Hugh!  I've added the ')' now.
> Martin
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

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


Re: [Rd] Unclosed parenthesis in grep.Rd

2018-03-05 Thread Martin Maechler
> Hugh Parsonage 
> on Mon, 5 Mar 2018 13:39:24 +1100 writes:

> Lines 129-131: \code{grep(value = FALSE)} returns a vector
> of the indices of the elements of \code{x} that yielded a
> match (or not, for \code{invert = TRUE}. This will be an
> integer vector unless the input

> There should be a closing parenthesis after \code{invert =
> TRUE}

Thank you, Hugh!  I've added the ')' now.
Martin

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


[Rd] Unclosed parenthesis in grep.Rd

2018-03-04 Thread Hugh Parsonage
Lines 129-131:
\code{grep(value = FALSE)} returns a vector of the indices
of the elements of \code{x} that yielded a match (or not, for
\code{invert = TRUE}. This will be an integer vector unless the input

There should be a closing parenthesis after \code{invert = TRUE}

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