tests/testthat/helpers.R

local_temp_rmd_file <- function(..., .env = parent.frame()) {
  path <- withr::local_tempfile(.local_envir = .env, fileext = ".Rmd")
  xfun::write_utf8(c(...), path)
  path
}

local_temp_draft <- function(.env = parent.frame()) {
  path <- withr::local_tempfile(.local_envir = .env, fileext = ".Rmd")
  # TODO: Use `rmarkdown::draft()` when rmarkdown 2.12 is out.
  pkg_file <- getFromNamespace("pkg_file", "rmarkdown")
  template_path <- pkg_file(
    "rmarkdown",
    "templates",
    "revealjs_presentation",
    package = "revealjs"
  )
  rmarkdown::draft(path, template_path, edit = FALSE)
}

.render_and_read <- function(input, xml = TRUE, ...) {
  skip_if_not_pandoc()
  output_file <- withr::local_tempfile(fileext = ".html")
  res <- rmarkdown::render(input, output_file = output_file, quiet = TRUE, ...)
  if (xml) {
    xml2::read_html(res)
  } else {
    xfun::read_utf8(res)
  }
}

# Use to test pandoc availability or version lower than
skip_if_not_pandoc <- function(ver = NULL) {
  if (!pandoc_available(ver)) {
    msg <- if (is.null(ver)) {
      "Pandoc is not available"
    } else {
      sprintf("Version of Pandoc is lower than %s.", ver)
    }
    skip(msg)
  }
}

# Use to test version greater than
skip_if_pandoc <- function(ver = NULL) {
  if (pandoc_available(ver)) {
    msg <- if (is.null(ver)) {
      "Pandoc is available"
    } else {
      sprintf("Version of Pandoc is greater than %s.", ver)
    }
    skip(msg)
  }
}

Try the revealjs package in your browser

Any scripts or data that you put into this service are public.

revealjs documentation built on April 3, 2025, 10:53 p.m.