knitr_has_yaml_chunk_options <- function() {
utils::packageVersion("knitr") >= "1.37.2"
}
options(htmltools.preserve.raw = TRUE)
htmlPreserve <- function(x) {
x <- paste(x, collapse = "\n")
if (nzchar(x)) {
if (grepl("\n", x, fixed = TRUE)) {
sprintf("\n```{=html}\n%s\n```\n", x)
} else {
sprintf("`%s`{=html}", x)
}
} else {
x
}
}
assignInNamespace("htmlPreserve", htmlPreserve, ns = "htmltools")
if (!knitr_has_yaml_chunk_options()) {
knitr_parse_block <- knitr:::parse_block
parse_block = function(
code,
header,
params.src,
markdown_mode = out_format('markdown')
) {
originalParamsSrc <- params.src
engine = sub('^([a-zA-Z0-9_]+).*$', '\\1', params.src)
partitioned <- partition_yaml_options(engine, code)
params = sub('^([a-zA-Z0-9_]+)', '', params.src)
params <- knitr:::parse_params(params)
unnamed_label <- knitr::opts_knit$get('unnamed.chunk.label')
if (startsWith(params$label, unnamed_label)) {
label <- partitioned$yaml[["label"]] %||% partitioned$yaml[["id"]]
if (!is.null(label)) {
params.src <- sub(
"^[a-zA-Z0-9_]+ *[ ,]?",
paste0(engine, " ", label, ", "),
params.src
)
}
}
params.src <- sub("\\s*,?\\s*$", "", params.src)
extra_opts <- list()
for (opt in c("ref.label", "ref-label")) {
if (!is.null(partitioned$yaml[[opt]])) {
value <- partitioned$yaml[[opt]]
opt <- sub("-", ".", opt)
extra_opts[[opt]] <- paste(
gsub(
"\n",
" ",
deparse(value, width.cutoff = 500, nlines = 1),
fixed = TRUE
),
collapse = " "
)
}
}
if (length(extra_opts) > 0) {
extra_opts <- paste(
paste0(names(extra_opts), "=", as.character(extra_opts), ", "),
collapse = ""
)
params.src <- paste0(params.src, ", ", sub(",\\s*$", "", extra_opts))
}
block <- knitr_parse_block(code, header, params.src, markdown_mode)
block[["params"]][["original.params.src"]] <- originalParamsSrc
block[["params"]][["chunk.echo"]] <- isTRUE(params[["echo"]]) ||
isTRUE(partitioned$yaml[["echo"]])
block
}
assignInNamespace("parse_block", parse_block, ns = "knitr")
}
wrap_asis_output <- function(options, x) {
if (length(options) == 0) {
return(x)
}
x <- paste(x, collapse = "")
caption <- figure_cap(options)[[1]]
if (nzchar(caption)) {
x <- paste0(x, "\n\n", caption)
}
classes <- paste0("cell-output-display")
attrs <- NULL
if (isTRUE(options[["output.hidden"]])) {
classes <- paste0(classes, " .hidden")
}
if (identical(options[["html-table-processing"]], "none")) {
attrs <- paste(attrs, "html-table-processing=none")
}
if (
grepl("^<\\w+[ >]", x) &&
grepl("<\\/\\w+>\\s*$", x) &&
!grepl('^<div class="kable-table">', x)
) {
x <- paste0("`````{=html}\n", x, "\n`````")
}
if (identical(options[["results"]], "asis")) {
return(x)
}
output_div(x, output_label_placeholder(options), classes, attrs)
}
add_html_caption <- function(options, x, ...) {
if (inherits(x, 'knit_asis_htmlwidget')) {
wrap_asis_output(options, x)
} else {
x
}
}
assignInNamespace("add_html_caption", add_html_caption, ns = "knitr")
if (utils::packageVersion("knitr") >= "1.32.8") {
knitr_sew <- knitr:::sew
sew <- function(x, options = list(), ...) {
if (
missing(options) &&
inherits(x, c("knit_image_paths", "html_screenshot", "knit_embed_url"))
) {
options <- knitr::opts_chunk$get()
}
if (inherits(x, "knit_image_paths")) {
knitr:::sew.knit_image_paths(x, options, ...)
} else if (inherits(x, "knit_asis")) {
is_html_widget <- inherits(x, "knit_asis_htmlwidget")
x <- if (missing(options)) {
knitr:::sew.knit_asis(x, ...)
} else {
knitr:::sew.knit_asis(x, options, ...)
}
if (is_html_widget) {
x
} else {
wrap_asis_output(options, x)
}
} else if (inherits(x, "character")) {
knitr:::sew.character(x, options, ...)
} else if (inherits(x, "html_screenshot")) {
knitr:::sew.html_screenshot(x, options, ...)
} else if (inherits(x, "knit_embed_url")) {
knitr:::sew.knit_embed_url(x, options, ...)
} else if (inherits(x, "source")) {
knitr:::sew.source(x, options, ...)
} else if (inherits(x, "warning")) {
knitr:::sew.warning(x, options, ...)
} else if (inherits(x, "message")) {
knitr:::sew.message(x, options, ...)
} else if (inherits(x, "error")) {
knitr:::sew.error(x, options, ...)
} else if (inherits(x, "list")) {
knitr:::sew.list(x, options, ...)
} else if (inherits(x, "recordedplot")) {
knitr:::sew.recordedplot(x, options, ...)
} else if (inherits(x, "rglRecordedplot") && requireNamespace("rgl")) {
rgl:::sew.rglRecordedplot(x, options, ...)
} else {
knitr_sew(x, options, ...)
}
}
assignInNamespace("sew", sew, ns = "knitr")
} else {
knitr_wrap <- knitr:::wrap
wrap <- function(x, options = list(), ...) {
if (inherits(x, "knit_image_paths")) {
knitr:::wrap.knit_image_paths(x, options, ...)
} else if (inherits(x, "knit_asis")) {
is_html_widget <- inherits(x, "knit_asis_htmlwidget")
x <- knitr:::wrap.knit_asis(x, options, ...)
if (is_html_widget) {
x
} else {
wrap_asis_output(options, x)
}
} else if (inherits(x, "character")) {
knitr:::wrap.character(x, options, ...)
} else if (inherits(x, "html_screenshot")) {
knitr:::wrap.html_screenshot(x, options, ...)
} else if (inherits(x, "knit_embed_url")) {
knitr:::wrap.knit_embed_url(x, options, ...)
} else if (inherits(x, "source")) {
knitr:::wrap.source(x, options, ...)
} else if (inherits(x, "warning")) {
knitr:::wrap.warning(x, options, ...)
} else if (inherits(x, "message")) {
knitr:::wrap.message(x, options, ...)
} else if (inherits(x, "error")) {
knitr:::wrap.error(x, options, ...)
} else if (inherits(x, "list")) {
knitr:::wrap.list(x, options, ...)
} else if (inherits(x, "recordedplot")) {
knitr:::wrap.recordedplot(x, options, ...)
} else {
knitr_wrap(x, options, ...)
}
}
assignInNamespace("wrap", wrap, ns = "knitr")
}
knitr_raw_block <- function(x, format) {
knitr::asis_output(paste0("\n\n```{=", format, "}\n", x, "\n```\n\n"))
}
knitr_kable_html <- knitr:::kable_html
kable_html <- function(...) {
x <- knitr_kable_html(...)
knitr_raw_block(x, "html")
}
knitr_valid_path <- knitr:::valid_path
valid_path = function(prefix, label) {
label <- sub("^#", "", label)
path <- knitr_valid_path(prefix, label)
gsub(":", "-", path, fixed = TRUE)
}
assignInNamespace("valid_path", valid_path, ns = "knitr")
if (
knitr_has_yaml_chunk_options() && utils::packageVersion("knitr") <= "1.45"
) {
knitr_comment_chars <- knitr:::comment_chars
knitr_comment_chars$ojs <- "//"
knitr_comment_chars$mermaid <- "%%"
knitr_comment_chars$dot <- "//"
assignInNamespace("comment_chars", knitr_comment_chars, ns = "knitr")
}