| require("tools") |
| |
| x <- Rd_db("base") |
| system.time(y <- lapply(x, function(e) |
| tryCatch(Rd2HTML(e, out = nullfile()), error = identity))) # 3-5 sec |
| stopifnot(!vapply(y, inherits, NA, "error")) |
| ## Gave error when "running" \Sexpr{.} DateTimeClasses.Rd |
| |
| |
| ## PR#18052: \dots must not be interpreted inside \preformatted |
| Rdsnippet <- tempfile() |
| writeLines(r"(\preformatted{ |
| \item{\dots}{foo(arg = "\\\\dots", ...)} |
| })", Rdsnippet) |
| #file.show(Rdsnippet) |
| stopifnot(exprs = { |
| identical(capture.output(Rd2HTML(Rdsnippet, fragment = TRUE))[2L], |
| r"(\item{\dots}{foo(arg = "\\dots", ...)})") |
| identical(capture.output(Rd2txt(Rdsnippet, fragment = TRUE))[2L], |
| r"(\item{\dots}{foo(arg = "\\dots", ...)})") |
| identical(capture.output(Rd2latex(Rdsnippet, fragment = TRUE))[2L], |
| r"(\bsl{}item\{\bsl{}dots\}\{foo(arg = "\bsl{}\bsl{}dots", ...)\})") |
| }) # the last two failed in R < 4.1.0 |
| |
| ## also do not translate \dots in R code lines in \examples |
| Rdsnippet <- tempfile() |
| writeLines(r"(\examples{ |
| foo <- function(arg = "\\\\dots", ...) NULL # \dots |
| })", Rdsnippet) |
| #file.show(Rdsnippet) |
| stopifnot(exprs = { |
| identical(capture.output(Rd2ex(parse_Rd(Rdsnippet), fragment = TRUE))[5L], |
| r"(foo <- function(arg = "\\dots", ...) NULL # \dots)") |
| }) # failed in R < 4.1.0 |
| |
| ## \usage: keep quoted "\\\\dots", but _do_ translate formal \dots arg |
| Rdsnippet <- tempfile() |
| writeLines(r"(\name{foo}\title{foo}\usage{ |
| ## keep this comment to ensure a newline at the end |
| foo(arg = "\\\\dots", \dots) |
| })", Rdsnippet) |
| Rdobj <- parse_Rd(Rdsnippet) |
| check_dots_usage <- function(FUN) { |
| out <- trimws(grep("foo(", capture.output(FUN(Rdobj)), |
| value = TRUE, fixed = TRUE)) |
| if (!identical(out, r"(foo(arg = "\\dots", ...))")) |
| stop("unexpected output: ", out) |
| } |
| check_dots_usage(Rd2HTML) |
| check_dots_usage(Rd2txt) |
| check_dots_usage(Rd2latex) |
| ## the last two failed in R < 4.1.0; output was foo(arg = "\...", ...) |