Nothing
# Copyright (C) 2021 Brodie Gaslam
#
# This file is part of "diffobj - Diffs for R Objects"
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# Go to <https://www.r-project.org/Licenses/GPL-2> for a copy of the license.
#' @include s4.R
NULL
#' Finalizing Methods for HTML Output
#'
#' Used as the \code{finalizer} slot to \code{\link{StyleHtml}} objects to wrap
#' character output prior to output to device. Used primarily by styles that
#' output to HTML to properly configure HTML page structure, including injecting
#' JS, CSS, etc..
#'
#' @param x object to finalize
#' @param x.chr character text representation of \code{x}, typically generated
#' with the \code{as.character} method for \code{x}
#' @param js character javascript code to append to HTML representation
#' @param ... arguments to pass on to methods
#' @export
setGeneric(
"finalizeHtml", function(x, ...) standardGeneric("finalizeHtml") # nocov
)
#' @rdname finalizeHtml
setMethod("finalizeHtml", c("ANY"),
function(x, x.chr, js, ...) {
if(!is.character(x.chr)) stop("Argument `x.chr` must be character")
if(!is.chr.1L(js)) stop("Argument `js` must be character(1L) and not NA.")
style <- x@etc@style
html.output <- style@html.output
pager <- style@pager
if(html.output == "auto") {
html.output <- if(is(pager, "PagerBrowser")) "page" else "diff.only"
}
if(html.output %in% c("diff.w.style", "page")) {
css.txt <- try(paste0(readLines(style@css), collapse="\n"), silent=TRUE)
if(inherits(css.txt, "try-error")) {
cond <- attr(css.txt, "condition")
warning(
"Unable to read provided css file \"", style@css, "\" (error: ",
paste0(conditionMessage(cond), collapse=""), ")."
)
css <- ""
} else {
css <- sprintf("<style type='text/css'>\n%s\n</style>", css.txt)
}
}
if(html.output == "diff.w.style") {
tpl <- "%s%s"
} else if (html.output == "page") {
x.chr <- enc2utf8(x.chr)
charset <-
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>'
tpl <- sprintf("
<!DOCTYPE html>
<html>
<head>
%s\n
%%s\n
</head>
<body>
<div id='diffobj_outer'>\n%%s\n</div>
<script type='text/javascript'>\n%s\n</script>
</body>
</html>",
charset,
js
)
} else if (html.output == "diff.only") {
css <- ""
tpl <- "%s%s"
} else
stop("Internal Error: unexpected html.output; contact maintainer.")# nocov
sprintf(tpl, css, paste0(x.chr, collapse=""))
}
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.