|
|
@@ -1,61 +0,0 @@ |
|
|
|
library("knitr") |
|
|
|
library("htmltools") |
|
|
|
library("base64enc") |
|
|
|
library("markdown") |
|
|
|
render_with_widgets <- function(input_file, |
|
|
|
output_file = sub("\\.Rmd$", ".html", input_file, ignore.case = TRUE), |
|
|
|
self_contained = TRUE, |
|
|
|
deps_path = file.path(dirname(output_file), "deps")) |
|
|
|
{ |
|
|
|
# Read input and convert to Markdown |
|
|
|
input <- readLines(input_file) |
|
|
|
md <- knit(text = input) |
|
|
|
# Get dependencies from knitr |
|
|
|
deps <- knit_meta() |
|
|
|
|
|
|
|
# Convert script dependencies into data URIs, and stylesheet |
|
|
|
# dependencies into inline stylesheets |
|
|
|
|
|
|
|
dep_scripts <- lapply(deps, function(x) |
|
|
|
{ |
|
|
|
lapply(x$script, function(script) file.path(x$src$file, script)) |
|
|
|
}) |
|
|
|
dep_stylesheets <- lapply(deps, function(x) |
|
|
|
{ |
|
|
|
lapply(x$stylesheet, function(stylesheet) file.path(x$src$file, stylesheet)) |
|
|
|
}) |
|
|
|
dep_scripts <- unique(unlist(dep_scripts)) |
|
|
|
dep_stylesheets <- unique(unlist(dep_stylesheets)) |
|
|
|
if (self_contained) { |
|
|
|
dep_html <- c(sapply(dep_scripts, function(script) |
|
|
|
{ |
|
|
|
sprintf('<script type="text/javascript" src="%s"></script>', dataURI(file = script)) |
|
|
|
}), |
|
|
|
sapply(dep_stylesheets, function(sheet) |
|
|
|
{ |
|
|
|
sprintf('<style>%s</style>', paste(readLines(sheet), collapse = "\n")) |
|
|
|
}) |
|
|
|
) |
|
|
|
} else { |
|
|
|
if (!dir.exists(deps_path)) |
|
|
|
{ |
|
|
|
dir.create(deps_path) |
|
|
|
} |
|
|
|
for (fil in c(dep_scripts, dep_stylesheets)) |
|
|
|
{ |
|
|
|
file.copy(fil, file.path(deps_path, basename(fil))) |
|
|
|
} |
|
|
|
dep_html <- c(sprintf('<script type="text/javascript" src="%s"></script>', file.path(deps_path, basename(dep_scripts))), |
|
|
|
sprintf('<link href="%s" type="text/css" rel="stylesheet">', file.path(deps_path, basename(dep_stylesheets)))) |
|
|
|
} |
|
|
|
|
|
|
|
# Extract the <!--html_preserve--> bits |
|
|
|
preserved <- extractPreserveChunks(md) |
|
|
|
|
|
|
|
# Render the HTML, and then restore the preserved chunks |
|
|
|
html <- markdownToHTML(text = preserved$value, header = dep_html) |
|
|
|
html <- restorePreserveChunks(html, preserved$chunks) |
|
|
|
|
|
|
|
# Write the output |
|
|
|
writeLines(html, output_file) |
|
|
|
} |