Skip to content

Commit e8d1059

Browse files
committed
fix non eval calculation for rmd vignettes
1 parent ba26669 commit e8d1059

1 file changed

Lines changed: 28 additions & 15 deletions

File tree

R/checkVignettes.R

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ detect_non_eval_chunks <- function(lines, vignetteType) {
300300
qmd = "^[\t >]*```+\\{\\{r\\s*\\w*\\}\\}$",
301301
rmd = "^[\t >]*```+\\s*$",
302302
rnw = "\\\\begin\\{verbatim\\}",
303-
rhtml = "^<!--\\s*begin\\.rcode.*eval\\s*=\\s*F(ALSE)?"
303+
rhtml = "$.^"
304304
)
305305
non_eval_chunk_lines <- grep(non_eval_pattern, lines)
306306
chunk_patterns_end <- switch(
@@ -312,11 +312,13 @@ detect_non_eval_chunks <- function(lines, vignetteType) {
312312
)
313313
chunk_ends <- grep(chunk_patterns_end, lines)
314314

315-
for (i in seq_along(non_eval_chunk_lines)) {
316-
next_end_index <-
317-
which(chunk_ends > non_eval_chunk_lines[i])[1L]
318-
if (!is.na(next_end_index))
319-
chunk_ends <- chunk_ends[-next_end_index]
315+
if (!identical(vignetteType, "rmd")) {
316+
for (i in seq_along(non_eval_chunk_lines)) {
317+
next_end_index <-
318+
which(chunk_ends > non_eval_chunk_lines[i])[1L]
319+
if (!is.na(next_end_index))
320+
chunk_ends <- chunk_ends[-next_end_index]
321+
}
320322
}
321323

322324
chunk_patterns_start <- switch(
@@ -326,24 +328,35 @@ detect_non_eval_chunks <- function(lines, vignetteType) {
326328
rnw = knitr::all_patterns[["rnw"]]$chunk.begin,
327329
rhtml = knitr::all_patterns[["html"]]$chunk.begin
328330
)
329-
chunk_starts <- grep(chunk_patterns_start, lines)
331+
chunk_starts <- setdiff(
332+
grep(chunk_patterns_start, lines), non_eval_chunk_lines
333+
)
330334

331335
for (i in seq_along(chunk_starts)) {
332336
next_end_index <- which(chunk_ends > chunk_starts[i])[1L]
333-
if (!is.na(next_end_index))
337+
if (!is.na(next_end_index)) {
338+
if (identical(vignetteType, "rmd"))
339+
non_eval_chunk_lines <- non_eval_chunk_lines[
340+
non_eval_chunk_lines != chunk_ends[next_end_index]
341+
]
334342
chunk_ends <- chunk_ends[-next_end_index]
343+
}
335344
}
345+
if (length(chunk_ends) && identical(vignetteType, "rmd"))
346+
non_eval_chunk_lines <- chunk_ends[c(TRUE, FALSE)]
336347

337-
if (identical(vignetteType, "qmd")) {
348+
eval_false_lines <- 0L
349+
if (identical(vignetteType, "qmd"))
338350
eval_false_lines <- grep("#\\|\\s*eval\\s*:\\s*F(ALSE)?", lines, TRUE)
339-
} else {
340-
eval_false_lines <- non_eval_chunk_lines
341-
}
351+
else
352+
eval_false_lines <- grep(
353+
"eval\\s*=\\s*F(ALSE)?", lines[chunk_starts], TRUE
354+
)
342355

343356
list(
344-
total = c(length(chunk_starts), non_eval_chunk_lines),
345-
eval_false = c(length(eval_false_lines), non_eval_chunk_lines),
346-
non_eval = non_eval_chunk_lines
357+
total = c(length(chunk_starts), length(non_eval_chunk_lines)),
358+
eval_false = length(eval_false_lines),
359+
non_eval = length(non_eval_chunk_lines)
347360
) |>
348361
lapply(
349362
function(values)

0 commit comments

Comments
 (0)