R/pandoc.R

Defines functions pandoc_output_formats pandoc_input_formats pandoc

Documented in pandoc_input_formats pandoc_output_formats

pandoc <- function() {
  if (!rmarkdown::pandoc_available()) {
    stop("Need pandoc (>= 2.4) - http://pandoc.org for conversion.") # nocov
  }
  rmarkdown::pandoc_exec()
}

..pandoc <- new.env(parent = emptyenv())

#' Give all Input Formats Supported by `Pandoc`
#'
#' @param use_cache don't call `Pandoc` again
#'
#' @return all supported `Pandoc` input formats
#' @export
pandoc_input_formats <- function(use_cache = TRUE) {
  if (!use_cache || !exists('pandoc_input_formats', envir = ..pandoc)) {
    assign('pandoc_input_formats',
           system2(pandoc(), "--list-input-formats",
                   stdout = TRUE, stderr = TRUE), envir = ..pandoc)
  }
  return(get('pandoc_input_formats', envir = ..pandoc))
}

#' Give all Output Formats Supported by `Pandoc`
#'
#' @param use_cache don't call `Pandoc` again
#'
#' @return all supported `Pandoc` output formats
#' @export
pandoc_output_formats <- function(use_cache = TRUE) {
  if (!use_cache || !exists('pandoc_output_formats', envir = ..pandoc)) {
    assign('pandoc_output_formats',
           system2(pandoc(), "--list-output-formats",
                   stdout = TRUE, stderr = TRUE), envir = ..pandoc)
  }
  return(get('pandoc_output_formats', envir = ..pandoc))
}

Try the flexsiteboard package in your browser

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

flexsiteboard documentation built on Nov. 16, 2022, 1:11 a.m.