[med-svn] [r-cran-htmltools] 05/07: New upstream version 0.3.6
Andreas Tille
tille at debian.org
Tue Oct 10 10:50:59 UTC 2017
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository r-cran-htmltools.
commit 69ffeb1b5248527bb7940d3192dcface539cfb61
Author: Andreas Tille <tille at debian.org>
Date: Tue Oct 10 12:47:55 2017 +0200
New upstream version 0.3.6
---
DESCRIPTION | 10 ++---
MD5 | 82 +++++++++++++++++++-------------------
NAMESPACE | 2 +-
NEWS | 13 ++++++
R/RcppExports.R | 2 +-
R/html_dependency.R | 8 ++++
R/tags.R | 48 +++++++++++++++-------
R/template.R | 17 +++++---
man/HTML.Rd | 1 -
man/as.tags.Rd | 1 -
man/browsable.Rd | 1 -
man/builder.Rd | 21 +++++-----
man/copyDependencyToDir.Rd | 1 -
man/css.Rd | 1 -
man/findDependencies.Rd | 5 ++-
man/htmlDependencies.Rd | 3 +-
man/htmlDependency.Rd | 8 +++-
man/htmlEscape.Rd | 1 -
man/htmlPreserve.Rd | 3 +-
man/htmlTemplate.Rd | 1 -
man/html_print.Rd | 1 -
man/include.Rd | 5 +--
man/knitr_methods.Rd | 5 +--
man/makeDependencyRelative.Rd | 1 -
man/print.html.Rd | 3 +-
man/renderDependencies.Rd | 1 -
man/renderDocument.Rd | 1 -
man/renderTags.Rd | 3 +-
man/resolveDependencies.Rd | 7 +++-
man/save_html.Rd | 1 -
man/singleton.Rd | 3 +-
man/singleton_tools.Rd | 1 -
man/subtractDependencies.Rd | 1 -
man/suppressDependencies.Rd | 1 -
man/tag.Rd | 8 ++--
man/urlEncodePath.Rd | 1 -
man/validateCssUnit.Rd | 5 +--
man/withTags.Rd | 1 -
src/RcppExports.cpp | 10 ++---
src/init.c | 18 +++++++++
tests/testthat/template-basic.html | 8 ++++
tests/testthat/test-tags.r | 14 ++++++-
tests/testthat/test-template.R | 21 ++++++++++
43 files changed, 219 insertions(+), 130 deletions(-)
diff --git a/DESCRIPTION b/DESCRIPTION
index 5fc1fae..460e91e 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
Package: htmltools
Type: Package
Title: Tools for HTML
-Version: 0.3.5
-Date: 2016-03-19
+Version: 0.3.6
+Date: 2017-04-26
Author: RStudio, Inc.
Maintainer: Joe Cheng <joe at rstudio.com>
Description: Tools for HTML generation and output.
@@ -13,9 +13,9 @@ Enhances: knitr
License: GPL (>= 2)
URL: https://github.com/rstudio/htmltools
BugReports: https://github.com/rstudio/htmltools/issues
-RoxygenNote: 5.0.1
+RoxygenNote: 6.0.1
LinkingTo: Rcpp
NeedsCompilation: yes
-Packaged: 2016-03-21 21:26:31 UTC; jcheng
+Packaged: 2017-04-27 00:04:32 UTC; jcheng
Repository: CRAN
-Date/Publication: 2016-03-21 23:36:11
+Date/Publication: 2017-04-28 07:41:46 UTC
diff --git a/MD5 b/MD5
index 134ba3b..a48ebc9 100644
--- a/MD5
+++ b/MD5
@@ -1,46 +1,48 @@
-72c03ca6886933e00b494cea3217e13f *DESCRIPTION
-3eff63e6ff5eb3d2749b77f1e1a13ae1 *NAMESPACE
-6f4e14ce9f5b4301c0b44af926525e9b *NEWS
-c1e4413f5fc7eba2f785e76fdda026be *R/RcppExports.R
-9328debfe564d97e4c59eb9e02ad2235 *R/html_dependency.R
+630310adf5be92835b9544240f92376c *DESCRIPTION
+41ac34eea891be5f999ed8b44f87e476 *NAMESPACE
+738bee7e0dd52e6d69ccfe44c8dc0394 *NEWS
+aa9302feb5eec2cedcb00f9d88e5af74 *R/RcppExports.R
+411239656a10eb50c5d1d217b9b57ede *R/html_dependency.R
7bee8b23618adb2848412fedc7164709 *R/html_escape.R
b3e3d3353ebc757321b60abcad04397c *R/html_print.R
-6a300f33f56fc7d5a8ea0fb5c7634d77 *R/tags.R
-06648459a4195a4c81282ae5729edc97 *R/template.R
-747b00f84aac5d38d90c382b7acea766 *man/HTML.Rd
-5f6685813bb68b37c2cef66dc64ec6b4 *man/as.tags.Rd
-93da0c851632d533098dfa737ef69274 *man/browsable.Rd
-a1f0a58f58e94685b9fe09314dc949ef *man/builder.Rd
-9eb6d8d33eb3d7278c44f08a52c4c153 *man/copyDependencyToDir.Rd
-8487ea5a1d6d5d5a37f14e56776b263d *man/css.Rd
-033d3ca20f2ca5598f1a146aabe59184 *man/findDependencies.Rd
-2af4b1961a102b3ae97d80bfc652ebe2 *man/htmlDependencies.Rd
-ee1b263b7ca40387a68f9fca8e2eadb1 *man/htmlDependency.Rd
-e204dbba8c1854906529114e0d2e47f2 *man/htmlEscape.Rd
-4e6d962c82d788fbb49b51264eeb9123 *man/htmlPreserve.Rd
-c12e2e060c1f0a252c7339bbd946d3c2 *man/htmlTemplate.Rd
-823f31b10e4c759bd944eed49f8224da *man/html_print.Rd
-6ef8c0f2ba87b45f17817f7febda6365 *man/include.Rd
-4ee94c21c8d63531903bbff3bb75926f *man/knitr_methods.Rd
-26aa8ef492ac58d38483f14c8897a077 *man/makeDependencyRelative.Rd
-958b662a2a54e8030649e391e9ed1ded *man/print.html.Rd
-9e4c782f5ad5aed1b31f1bf70beca638 *man/renderDependencies.Rd
-8478bfe350d31adff0e94ebf5a3aea65 *man/renderDocument.Rd
-3f71ee0061e139ac0fc10f0e38e0765c *man/renderTags.Rd
-bf9c821c3fcac5b092940b1acbe8f4df *man/resolveDependencies.Rd
-517d1ed333b880fc0846d82f09d86f96 *man/save_html.Rd
-03a6dd0aab6a1150f8c0b575aacc0806 *man/singleton.Rd
-ef71b945ad76fb3a1d8e8d89fbecc19b *man/singleton_tools.Rd
-c27574242254c7379b602e957ecfb7d9 *man/subtractDependencies.Rd
-0b686655aaa750cff5d37a674207f6bd *man/suppressDependencies.Rd
-e7721483d5e136d7652edba62e64e54d *man/tag.Rd
-cb34418668e63388d3edd67d2dd90c52 *man/urlEncodePath.Rd
-60be5348923d73ebf9235e6e790628e3 *man/validateCssUnit.Rd
-4a499bda5c52e3a41a9d0d01e29b3536 *man/withTags.Rd
-978ffdd268a174b06c94b067b18c46d7 *src/RcppExports.cpp
+f02106c1cda38dbdd97d40370f99e4e1 *R/tags.R
+31064a678bc8589cfd29497262ba2110 *R/template.R
+ebcfaa458d3bdefadded43a4d64cfff9 *man/HTML.Rd
+c00712c215b7bbb80a6287fee17f3c24 *man/as.tags.Rd
+88494342535e91fa8972fd2fc3f1fde5 *man/browsable.Rd
+6bfa2d7cdaca48f17caaa6b11902e28e *man/builder.Rd
+bcfebb5f9577a5013fe33242fdec9645 *man/copyDependencyToDir.Rd
+11bd91091ffdde442e05a6a26823a84d *man/css.Rd
+83f5a6962792ba50b19b48dc1c65fd39 *man/findDependencies.Rd
+b1b2d807ab611007bdf9b582b64e5f24 *man/htmlDependencies.Rd
+9f7aaeaaa75598fbb0ab71e20359965d *man/htmlDependency.Rd
+91c1824deb08f57376108765fd29dbaa *man/htmlEscape.Rd
+475bf569370053b828bf69e4bb283825 *man/htmlPreserve.Rd
+516afef01fac034a4e414e7515a7b71e *man/htmlTemplate.Rd
+f0a6e81826dcaf3e212e70c63e67189e *man/html_print.Rd
+4f34e99b07220d7a2fa41b9029a16862 *man/include.Rd
+93bd5afcdac04bc4c5322122f0710e75 *man/knitr_methods.Rd
+2b18a3612062f7783435b8dfd1e215f4 *man/makeDependencyRelative.Rd
+16159aa45a251fb364e5fd1fd144d1d7 *man/print.html.Rd
+504914f9f04e3a96f20d707b5acc341f *man/renderDependencies.Rd
+dee26db7dd1d20fc2f13746ef9e9ae1d *man/renderDocument.Rd
+5943238916b4b5866e49846183c95f98 *man/renderTags.Rd
+3d7d639046044b164f7dabe61158c67d *man/resolveDependencies.Rd
+3e8fac6287e21baa2e492fb2e581689b *man/save_html.Rd
+72d8cd938a5a644116813539b07d0576 *man/singleton.Rd
+0c319382fa19718f0d0da795c20501ce *man/singleton_tools.Rd
+f0de725705e4f99a532bc4a9cc58664c *man/subtractDependencies.Rd
+127fb8880888366a5c37c0b3b7eac069 *man/suppressDependencies.Rd
+c36b122e98a5f4a6e89892f9cf8336ba *man/tag.Rd
+cd3894dd85e4d84cc4ff5dc2a567fd4b *man/urlEncodePath.Rd
+b107695e665e7daf7fb074bfd1ad4d94 *man/validateCssUnit.Rd
+dec0c8e4a1f951e26daa06e9c07f986b *man/withTags.Rd
+3305b464312f0fccbc917c491e79201d *src/RcppExports.cpp
+a941e5cc1f933a4245b62b772a9263c5 *src/init.c
f7dbf02b3735f8a64fb1cc9264416713 *src/template.cpp
d5386f261693f9f4a5dda7b6fe0aa9f0 *tests/test-all.R
+4de059d582d96a7c86907beb670b819d *tests/testthat/template-basic.html
ce9c101bbebef449d432567b9a29e9f9 *tests/testthat/template-document.html
bd23b1f0bd8705c3fe39c9f537cd1305 *tests/testthat/test-deps.r
-2d382055a6affd4f39407b0664c04041 *tests/testthat/test-tags.r
-0c93372a28e38db6c9e7146c6a1644af *tests/testthat/test-template.R
+f619582da6617e70858b2c462f956f9b *tests/testthat/test-tags.r
+2d57750590f71f1bb6a96604a05a7d23 *tests/testthat/test-template.R
diff --git a/NAMESPACE b/NAMESPACE
index 98c7a22..d36fd06 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -86,4 +86,4 @@ export(withTags)
import(digest)
import(utils)
importFrom(Rcpp,sourceCpp)
-useDynLib(htmltools)
+useDynLib(htmltools, .registration = TRUE)
diff --git a/NEWS b/NEWS
index 1d3bf0e..6074313 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,16 @@
+htmltools 0.3.6
+--------------------------------------------------------------------------------
+
+* `validateCssUnit()` now accepts viewport units (vw, vh, vmin, vmax). (#56)
+
+* `restorePreserveChunks()` marks the output with the correct encoding now
+ (UTF-8).
+
+* Length-0 attributes are now dropped, like NULLs. (#65)
+
+* Fixed #69: On Windows, `renderDocument()` did not mark output as UTF-8 if the
+ head was UTF-8 but body was ASCII. (#71)
+
htmltools 0.3.5
--------------------------------------------------------------------------------
diff --git a/R/RcppExports.R b/R/RcppExports.R
index a7bbf42..5cb5287 100644
--- a/R/RcppExports.R
+++ b/R/RcppExports.R
@@ -1,4 +1,4 @@
-# This file was generated by Rcpp::compileAttributes
+# Generated by using Rcpp::compileAttributes() -> do not edit by hand
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
template_dfa <- function(x) {
diff --git a/R/html_dependency.R b/R/html_dependency.R
index 0f2011e..9db9405 100644
--- a/R/html_dependency.R
+++ b/R/html_dependency.R
@@ -19,6 +19,9 @@
#' @param head Arbitrary lines of HTML to insert into the document head
#' @param attachment Attachment(s) to include within the document head. See
#' Details.
+#' @param package An R package name to indicate where to find the \code{src}
+#' directory when \code{src} is a relative path (see
+#' \code{\link{resolveDependencies}}).
#' @param all_files Whether all files under the \code{src} directory are
#' dependency files. If \code{FALSE}, only the files specified in
#' \code{script}, \code{stylesheet}, and \code{attachment} are treated as
@@ -67,6 +70,7 @@ htmlDependency <- function(name,
stylesheet = NULL,
head = NULL,
attachment = NULL,
+ package = NULL,
all_files = TRUE) {
# This function shouldn't be called from a namespace environment with
@@ -99,6 +103,7 @@ htmlDependency <- function(name,
stylesheet = stylesheet,
head = head,
attachment = attachment,
+ package = package,
all_files = all_files
))
}
@@ -270,6 +275,9 @@ copyDependencyToDir <- function(dependency, outputDir, mustWork = TRUE) {
return(dependency)
}
}
+ # resolve the relative file path to absolute path in package
+ if (!is.null(dependency$package))
+ dir <- system.file(dir, package = dependency$package)
if (length(outputDir) != 1 || outputDir %in% c("", "/"))
stop('outputDir must be of length 1 and cannot be "" or "/"')
diff --git a/R/tags.R b/R/tags.R
index 1bcb86e..6481447 100644
--- a/R/tags.R
+++ b/R/tags.R
@@ -68,11 +68,14 @@ depListToNamedDepList <- function(dependencies) {
#' the latest version number is used.
#'
#' @param dependencies A list of \code{\link{htmlDependency}} objects.
+#' @param resolvePackageDir Whether to resolve the relative path to an absolute
+#' path via \code{\link{system.file}} when the \code{package} attribute is
+#' present in a dependency object.
#' @return dependencies A list of \code{\link{htmlDependency}} objects with
#' redundancies removed.
#'
#' @export
-resolveDependencies <- function(dependencies) {
+resolveDependencies <- function(dependencies, resolvePackageDir = TRUE) {
# Remove nulls
deps <- dependencies[!sapply(dependencies, is.null)]
@@ -88,7 +91,13 @@ resolveDependencies <- function(dependencies) {
sorted <- order(ifelse(depnames == depname, TRUE, NA), depvers,
na.last = NA, decreasing = TRUE)
# The first element in the list is the one with the largest version.
- deps[[sorted[[1]]]]
+ dep <- deps[[sorted[[1]]]]
+ if (resolvePackageDir && !is.null(dep$package)) {
+ dir <- dep$src$file
+ if (!is.null(dir)) dep$src$file <- system.file(dir, package = dep$package)
+ dep$package <- NULL
+ }
+ dep
}))
}
@@ -150,9 +159,10 @@ dropNulls <- function(x) {
}
nullOrEmpty <- function(x) {
- is.null(x) || length(x) == 0
+ length(x) == 0
}
-# Given a vector or list, drop all the NULL items in it
+
+# Given a vector or list, drop all the NULL or length-0 items in it
dropNullsOrEmpty <- function(x) {
x[!vapply(x, nullOrEmpty, FUN.VALUE=logical(1))]
}
@@ -333,9 +343,9 @@ tag <- function(`_tag_name`, varArgs) {
if (is.null(varArgsNames))
varArgsNames <- character(length=length(varArgs))
- # Named arguments become attribs, dropping NULL values
+ # Named arguments become attribs, dropping NULL and length-0 values
named_idx <- nzchar(varArgsNames)
- attribs <- dropNulls(varArgs[named_idx])
+ attribs <- dropNullsOrEmpty(varArgs[named_idx])
# Unnamed arguments are flattened and added as children.
# Use unname() to remove the names attribute from the list, which would
@@ -472,7 +482,7 @@ renderTags <- function(x, singletons = character(0), indent = 0) {
# Do singleton and head processing before rendering
singletonInfo <- takeSingletons(x, singletons)
headInfo <- takeHeads(singletonInfo$ui)
- deps <- resolveDependencies(findDependencies(singletonInfo$ui))
+ deps <- resolveDependencies(findDependencies(singletonInfo$ui, tagify = FALSE))
headIndent <- if (is.numeric(indent)) indent + 1 else indent
headHtml <- doRenderTags(headInfo$head, indent = headIndent)
@@ -636,12 +646,16 @@ takeHeads <- function(ui) {
#' Walks a hierarchy of tags looking for attached dependencies.
#'
#' @param tags A tag-like object to search for dependencies.
+#' @param tagify Whether to tagify the input before searching for dependencies.
#'
#' @return A list of \code{\link{htmlDependency}} objects.
#'
#' @export
-findDependencies <- function(tags) {
- dep <- htmlDependencies(tagify(tags))
+findDependencies <- function(tags, tagify = TRUE) {
+ if (isTRUE(tagify)) {
+ tags <- tagify(tags)
+ }
+ dep <- htmlDependencies(tags)
if (!is.null(dep) && inherits(dep, "html_dependency"))
dep <- list(dep)
children <- if (is.list(tags)) {
@@ -651,7 +665,7 @@ findDependencies <- function(tags) {
tags
}
}
- childDeps <- unlist(lapply(children, findDependencies), recursive = FALSE)
+ childDeps <- unlist(lapply(children, findDependencies, tagify = FALSE), recursive = FALSE)
c(childDeps, if (!is.null(dep)) dep)
}
@@ -1140,8 +1154,11 @@ extractPreserveChunks <- function(strval) {
#' @rdname htmlPreserve
#' @export
restorePreserveChunks <- function(strval, chunks) {
+ strval <- enc2utf8(strval)
+ chunks <- enc2utf8(chunks)
for (id in names(chunks))
strval <- gsub(id, chunks[[id]], strval, fixed = TRUE, useBytes = TRUE)
+ Encoding(strval) <- 'UTF-8'
strval
}
@@ -1160,7 +1177,7 @@ NULL
knit_print.shiny.tag <- function(x, ...) {
x <- tagify(x)
output <- surroundSingletons(x)
- deps <- resolveDependencies(findDependencies(x))
+ deps <- resolveDependencies(findDependencies(x, tagify = FALSE), resolvePackageDir = FALSE)
content <- takeHeads(output)
head_content <- doRenderTags(tagList(content$head))
@@ -1177,7 +1194,7 @@ knit_print.shiny.tag <- function(x, ...) {
#' @rdname knitr_methods
#' @export
knit_print.html <- function(x, ...) {
- deps <- resolveDependencies(findDependencies(x))
+ deps <- resolveDependencies(findDependencies(x, tagify = FALSE))
knitr::asis_output(htmlPreserve(as.character(x)),
meta = if (length(deps)) list(deps))
}
@@ -1354,8 +1371,9 @@ is.singleton <- function(x) {
#' Single element character vectors must be \code{"auto"} or \code{"inherit"},
#' or a number. If the number has a suffix, it must be valid: \code{px},
#' \code{\%}, \code{em}, \code{pt}, \code{in}, \code{cm}, \code{mm}, \code{ex},
-#' or \code{pc}. If the number has no suffix, the suffix \code{"px"} is
-#' appended.
+#' \code{pc}, \code{vh}, \code{vw}, \code{vmin}, or \code{vmax}.
+#' If the number has no suffix, the suffix \code{"px"} is appended.
+#'
#'
#' Any other value will cause an error to be thrown.
#'
@@ -1380,7 +1398,7 @@ validateCssUnit <- function(x) {
x <- as.numeric(x)
pattern <-
- "^(auto|inherit|((\\.\\d+)|(\\d+(\\.\\d+)?))(%|in|cm|mm|em|ex|pt|pc|px))$"
+ "^(auto|inherit|((\\.\\d+)|(\\d+(\\.\\d+)?))(%|in|cm|mm|em|ex|pt|pc|px|vh|vw|vmin|vmax))$"
if (is.character(x) &&
!grepl(pattern, x)) {
diff --git a/R/template.R b/R/template.R
index 24d8022..f3fd18b 100644
--- a/R/template.R
+++ b/R/template.R
@@ -17,7 +17,7 @@
#'
#' @seealso \code{\link{renderDocument}}
#' @export
-#' @useDynLib htmltools
+#' @useDynLib htmltools, .registration = TRUE
#' @importFrom Rcpp sourceCpp
htmlTemplate <- function(filename = NULL, ..., text_ = NULL, document_ = "auto") {
if (!xor(is.null(filename), is.null(text_))) {
@@ -120,15 +120,22 @@ renderDocument <- function(x, deps = NULL, processDep = identity) {
# Put content in the <head> section
head_content <- paste0(
- ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>',
- sprintf(' <script type="application/shiny-singletons">%s</script>',
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n',
+ sprintf(' <script type="application/shiny-singletons">%s</script>\n',
paste(result$singletons, collapse = ',')
),
- sprintf(' <script type="application/html-dependencies">%s</script>',
+ sprintf(' <script type="application/html-dependencies">%s</script>\n',
depStr
),
depHtml,
c(result$head, recursive = TRUE)
)
- sub("<!-- HEAD_CONTENT -->", head_content, result$html, fixed = TRUE)
+ # Need to mark result as UTF-8. If body is ASCII, it will be marked with
+ # encoding "unknown". If the head has UTF-8 characters and is marked as
+ # "UTF-8", the output string here will have the correct UTF-8 byte sequences,
+ # but will be marked as "unknown", which causes the wrong text to be
+ # displayed. See https://github.com/rstudio/shiny/issues/1395
+ res <- sub("<!-- HEAD_CONTENT -->", head_content, result$html, fixed = TRUE)
+ Encoding(res) <- "UTF-8"
+ res
}
diff --git a/man/HTML.Rd b/man/HTML.Rd
index 48cd613..35dbebb 100644
--- a/man/HTML.Rd
+++ b/man/HTML.Rd
@@ -24,4 +24,3 @@ el <- div(HTML("I like <u>turtles</u>"))
cat(as.character(el))
}
-
diff --git a/man/as.tags.Rd b/man/as.tags.Rd
index 7b056fd..49ff125 100644
--- a/man/as.tags.Rd
+++ b/man/as.tags.Rd
@@ -16,4 +16,3 @@ An S3 method for converting arbitrary values to a value that can be used as
the child of a tag or \code{tagList}. The default implementation simply calls
\code{\link[base]{as.character}}.
}
-
diff --git a/man/browsable.Rd b/man/browsable.Rd
index 1b0c68a..b2d186e 100644
--- a/man/browsable.Rd
+++ b/man/browsable.Rd
@@ -30,4 +30,3 @@ by default when printed at the console.
You can override the default browsability of an HTML object by explicitly
passing \code{browse = TRUE} (or \code{FALSE}) to the \code{print} function.
}
-
diff --git a/man/builder.Rd b/man/builder.Rd
index 9a79291..d375421 100644
--- a/man/builder.Rd
+++ b/man/builder.Rd
@@ -1,25 +1,25 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/tags.R
\name{builder}
-\alias{a}
-\alias{br}
\alias{builder}
-\alias{code}
-\alias{div}
-\alias{em}
+\alias{tags}
+\alias{p}
\alias{h1}
\alias{h2}
\alias{h3}
\alias{h4}
\alias{h5}
\alias{h6}
-\alias{hr}
-\alias{img}
-\alias{p}
-\alias{pre}
+\alias{a}
+\alias{br}
+\alias{div}
\alias{span}
+\alias{pre}
+\alias{code}
+\alias{img}
\alias{strong}
-\alias{tags}
+\alias{em}
+\alias{hr}
\title{HTML Builder Functions}
\usage{
tags
@@ -95,4 +95,3 @@ doc <- tags$html(
)
cat(as.character(doc))
}
-
diff --git a/man/copyDependencyToDir.Rd b/man/copyDependencyToDir.Rd
index 99b27b4..9ac765c 100644
--- a/man/copyDependencyToDir.Rd
+++ b/man/copyDependencyToDir.Rd
@@ -36,4 +36,3 @@ easier to perform that copy.
\code{\link{makeDependencyRelative}} can be used with the returned
value to make the path relative to a specific directory.
}
-
diff --git a/man/css.Rd b/man/css.Rd
index 3921316..0ceac7e 100644
--- a/man/css.Rd
+++ b/man/css.Rd
@@ -45,4 +45,3 @@ css(
)
}
-
diff --git a/man/findDependencies.Rd b/man/findDependencies.Rd
index 37e0834..1402723 100644
--- a/man/findDependencies.Rd
+++ b/man/findDependencies.Rd
@@ -4,10 +4,12 @@
\alias{findDependencies}
\title{Collect attached dependencies from HTML tag object}
\usage{
-findDependencies(tags)
+findDependencies(tags, tagify = TRUE)
}
\arguments{
\item{tags}{A tag-like object to search for dependencies.}
+
+\item{tagify}{Whether to tagify the input before searching for dependencies.}
}
\value{
A list of \code{\link{htmlDependency}} objects.
@@ -15,4 +17,3 @@ A list of \code{\link{htmlDependency}} objects.
\description{
Walks a hierarchy of tags looking for attached dependencies.
}
-
diff --git a/man/htmlDependencies.Rd b/man/htmlDependencies.Rd
index 7e1fcf5..326f5ea 100644
--- a/man/htmlDependencies.Rd
+++ b/man/htmlDependencies.Rd
@@ -1,9 +1,9 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/html_dependency.R
\name{htmlDependencies}
-\alias{attachDependencies}
\alias{htmlDependencies}
\alias{htmlDependencies<-}
+\alias{attachDependencies}
\title{HTML dependency metadata}
\usage{
htmlDependencies(x)
@@ -53,4 +53,3 @@ tagList(div("Code here"), dep)
attachDependencies(div("Code here"), dep)
}
-
diff --git a/man/htmlDependency.Rd b/man/htmlDependency.Rd
index 891a0be..bde3897 100644
--- a/man/htmlDependency.Rd
+++ b/man/htmlDependency.Rd
@@ -5,7 +5,8 @@
\title{Define an HTML dependency}
\usage{
htmlDependency(name, version, src, meta = NULL, script = NULL,
- stylesheet = NULL, head = NULL, attachment = NULL, all_files = TRUE)
+ stylesheet = NULL, head = NULL, attachment = NULL, package = NULL,
+ all_files = TRUE)
}
\arguments{
\item{name}{Library name}
@@ -30,6 +31,10 @@ specified relative to the \code{src} parameter).}
\item{attachment}{Attachment(s) to include within the document head. See
Details.}
+\item{package}{An R package name to indicate where to find the \code{src}
+directory when \code{src} is a relative path (see
+\code{\link{resolveDependencies}}).}
+
\item{all_files}{Whether all files under the \code{src} directory are
dependency files. If \code{FALSE}, only the files specified in
\code{script}, \code{stylesheet}, and \code{attachment} are treated as
@@ -78,4 +83,3 @@ Each dependency can be located on the filesystem, at a relative or
Use \code{\link{attachDependencies}} to associate a list of
dependencies with the HTML it belongs with.
}
-
diff --git a/man/htmlEscape.Rd b/man/htmlEscape.Rd
index 1f99b75..c8c4bb1 100644
--- a/man/htmlEscape.Rd
+++ b/man/htmlEscape.Rd
@@ -18,4 +18,3 @@ Character vector with escaped text.
Escape HTML entities contained in a character vector so that it can be safely
included as text or an attribute value within an HTML document
}
-
diff --git a/man/htmlPreserve.Rd b/man/htmlPreserve.Rd
index 5f60569..bcb9435 100644
--- a/man/htmlPreserve.Rd
+++ b/man/htmlPreserve.Rd
@@ -1,8 +1,8 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/tags.R
\name{htmlPreserve}
-\alias{extractPreserveChunks}
\alias{htmlPreserve}
+\alias{extractPreserveChunks}
\alias{restorePreserveChunks}
\title{Preserve HTML regions}
\usage{
@@ -63,4 +63,3 @@ output <- restorePreserveChunks(output, extracted$chunks)
output
}
-
diff --git a/man/htmlTemplate.Rd b/man/htmlTemplate.Rd
index 165fa65..55cbef0 100644
--- a/man/htmlTemplate.Rd
+++ b/man/htmlTemplate.Rd
@@ -29,4 +29,3 @@ complete HTML document, then the returned object will also have class
\seealso{
\code{\link{renderDocument}}
}
-
diff --git a/man/html_print.Rd b/man/html_print.Rd
index 67b8bac..853cd47 100644
--- a/man/html_print.Rd
+++ b/man/html_print.Rd
@@ -22,4 +22,3 @@ Invisibly returns the URL or path of the generated HTML page.
Convenience method that provides an implementation of the
\code{\link[base:print]{print}} method for HTML content.
}
-
diff --git a/man/include.Rd b/man/include.Rd
index 4a5d8ce..86dcf9a 100644
--- a/man/include.Rd
+++ b/man/include.Rd
@@ -2,11 +2,11 @@
% Please edit documentation in R/tags.R
\name{include}
\alias{include}
-\alias{includeCSS}
\alias{includeHTML}
+\alias{includeText}
\alias{includeMarkdown}
+\alias{includeCSS}
\alias{includeScript}
-\alias{includeText}
\title{Include Content From a File}
\usage{
includeHTML(path)
@@ -44,4 +44,3 @@ large literal R string.
The \code{includeMarkdown} function requires the \code{markdown}
package.
}
-
diff --git a/man/knitr_methods.Rd b/man/knitr_methods.Rd
index fc48f49..9f115df 100644
--- a/man/knitr_methods.Rd
+++ b/man/knitr_methods.Rd
@@ -1,10 +1,10 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/tags.R
\name{knitr_methods}
-\alias{knit_print.html}
+\alias{knitr_methods}
\alias{knit_print.shiny.tag}
+\alias{knit_print.html}
\alias{knit_print.shiny.tag.list}
-\alias{knitr_methods}
\title{Knitr S3 methods}
\usage{
knit_print.shiny.tag(x, ...)
@@ -22,4 +22,3 @@ knit_print.shiny.tag.list(x, ...)
These S3 methods are necessary to allow HTML tags to print themselves in
knitr/rmarkdown documents.
}
-
diff --git a/man/makeDependencyRelative.Rd b/man/makeDependencyRelative.Rd
index 9f9eb07..f568bbd 100644
--- a/man/makeDependencyRelative.Rd
+++ b/man/makeDependencyRelative.Rd
@@ -30,4 +30,3 @@ directories.
\seealso{
\code{\link{copyDependencyToDir}}
}
-
diff --git a/man/print.html.Rd b/man/print.html.Rd
index d3b51fa..187f86f 100644
--- a/man/print.html.Rd
+++ b/man/print.html.Rd
@@ -1,8 +1,8 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/tags.R
\name{print.shiny.tag}
-\alias{print.html}
\alias{print.shiny.tag}
+\alias{print.html}
\title{Print method for HTML/tags}
\usage{
\method{print}{shiny.tag}(x, browse = is.browsable(x), ...)
@@ -23,4 +23,3 @@ will be rendered at the console.}
S3 method for printing HTML that prints markup or renders HTML in a web
browser.
}
-
diff --git a/man/renderDependencies.Rd b/man/renderDependencies.Rd
index 7c23b38..1b0fc2d 100644
--- a/man/renderDependencies.Rd
+++ b/man/renderDependencies.Rd
@@ -27,4 +27,3 @@ An \code{\link{HTML}} object suitable for inclusion in the head of an
Create the appropriate HTML markup for including dependencies in an HTML
document.
}
-
diff --git a/man/renderDocument.Rd b/man/renderDocument.Rd
index ea59f41..0bf2372 100644
--- a/man/renderDocument.Rd
+++ b/man/renderDocument.Rd
@@ -29,4 +29,3 @@ inserts those. To do the insertion, this function finds the string
\code{"<!-- HEAD_CONTENT -->"} in the document, and replaces it with the web
dependencies.
}
-
diff --git a/man/renderTags.Rd b/man/renderTags.Rd
index 2213675..f5b63df 100644
--- a/man/renderTags.Rd
+++ b/man/renderTags.Rd
@@ -1,8 +1,8 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/tags.R
\name{renderTags}
-\alias{doRenderTags}
\alias{renderTags}
+\alias{doRenderTags}
\title{Render tags into HTML}
\usage{
renderTags(x, singletons = character(0), indent = 0)
@@ -49,4 +49,3 @@ framework libraries, not directly by most users--see
singleton, head, and dependency handling, and simply renders the given tag
objects as HTML.
}
-
diff --git a/man/resolveDependencies.Rd b/man/resolveDependencies.Rd
index f08ce85..1c3bb4d 100644
--- a/man/resolveDependencies.Rd
+++ b/man/resolveDependencies.Rd
@@ -4,10 +4,14 @@
\alias{resolveDependencies}
\title{Resolve a list of dependencies}
\usage{
-resolveDependencies(dependencies)
+resolveDependencies(dependencies, resolvePackageDir = TRUE)
}
\arguments{
\item{dependencies}{A list of \code{\link{htmlDependency}} objects.}
+
+\item{resolvePackageDir}{Whether to resolve the relative path to an absolute
+path via \code{\link{system.file}} when the \code{package} attribute is
+present in a dependency object.}
}
\value{
dependencies A list of \code{\link{htmlDependency}} objects with
@@ -18,4 +22,3 @@ Given a list of dependencies, removes any redundant dependencies (based on
name equality). If multiple versions of a dependency are found, the copy with
the latest version number is used.
}
-
diff --git a/man/save_html.Rd b/man/save_html.Rd
index 736eeff..1dfeaf5 100644
--- a/man/save_html.Rd
+++ b/man/save_html.Rd
@@ -19,4 +19,3 @@ save_html(html, file, background = "white", libdir = "lib")
Save the specified HTML object to a file, copying all of it's
dependencies to the directory specified via \code{libdir}.
}
-
diff --git a/man/singleton.Rd b/man/singleton.Rd
index 9bcbcf6..bd1ac45 100644
--- a/man/singleton.Rd
+++ b/man/singleton.Rd
@@ -1,8 +1,8 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/tags.R
\name{singleton}
-\alias{is.singleton}
\alias{singleton}
+\alias{is.singleton}
\title{Include content only once}
\usage{
singleton(x, value = TRUE)
@@ -20,4 +20,3 @@ be included in the generated document only once, yet may appear in the
document-generating code more than once. Only the first appearance of the
content (in document order) will be used.
}
-
diff --git a/man/singleton_tools.Rd b/man/singleton_tools.Rd
index 9ff54d2..2bfeb61 100644
--- a/man/singleton_tools.Rd
+++ b/man/singleton_tools.Rd
@@ -33,4 +33,3 @@ encountered should have the singleton attribute removed.}
Functions for manipulating \code{\link{singleton}} objects in tag
hierarchies. Intended for framework authors.
}
-
diff --git a/man/subtractDependencies.Rd b/man/subtractDependencies.Rd
index 2816d27..4a5645c 100644
--- a/man/subtractDependencies.Rd
+++ b/man/subtractDependencies.Rd
@@ -30,4 +30,3 @@ list; if the latter, a warning can be emitted if the version of the
dependency being removed is later than the version of the dependency object
that is causing the removal.
}
-
diff --git a/man/suppressDependencies.Rd b/man/suppressDependencies.Rd
index 675ba0f..cb71113 100644
--- a/man/suppressDependencies.Rd
+++ b/man/suppressDependencies.Rd
@@ -21,4 +21,3 @@ HTML template.
\code{\link[htmltools]{htmlDependency}}
}
-
diff --git a/man/tag.Rd b/man/tag.Rd
index 8743c67..8e00698 100644
--- a/man/tag.Rd
+++ b/man/tag.Rd
@@ -2,13 +2,14 @@
% Please edit documentation in R/tags.R
\name{tag}
\alias{tag}
+\alias{tagList}
\alias{tagAppendAttributes}
+\alias{tagHasAttribute}
+\alias{tagGetAttribute}
\alias{tagAppendChild}
\alias{tagAppendChildren}
-\alias{tagGetAttribute}
-\alias{tagHasAttribute}
-\alias{tagList}
\alias{tagSetChildren}
+\alias{tag}
\title{HTML Tag Object}
\usage{
tagList(...)
@@ -71,4 +72,3 @@ x <- list(tags$h1("Title"),
tags$p("Text here"))
tagList(x)
}
-
diff --git a/man/urlEncodePath.Rd b/man/urlEncodePath.Rd
index a78bd28..b893276 100644
--- a/man/urlEncodePath.Rd
+++ b/man/urlEncodePath.Rd
@@ -14,4 +14,3 @@ Encode characters in a URL path. This is the same as
\code{\link[utils]{URLencode}} with \code{reserved = TRUE} except that
\code{/} is preserved.
}
-
diff --git a/man/validateCssUnit.Rd b/man/validateCssUnit.Rd
index 61052cb..a90f7c9 100644
--- a/man/validateCssUnit.Rd
+++ b/man/validateCssUnit.Rd
@@ -26,8 +26,8 @@ number plus a suffix of \code{"px"}.
Single element character vectors must be \code{"auto"} or \code{"inherit"},
or a number. If the number has a suffix, it must be valid: \code{px},
\code{\%}, \code{em}, \code{pt}, \code{in}, \code{cm}, \code{mm}, \code{ex},
-or \code{pc}. If the number has no suffix, the suffix \code{"px"} is
-appended.
+\code{pc}, \code{vh}, \code{vw}, \code{vmin}, or \code{vmax}.
+If the number has no suffix, the suffix \code{"px"} is appended.
Any other value will cause an error to be thrown.
}
@@ -35,4 +35,3 @@ Any other value will cause an error to be thrown.
validateCssUnit("10\%")
validateCssUnit(400) #treated as '400px'
}
-
diff --git a/man/withTags.Rd b/man/withTags.Rd
index 58c3bf8..a8a7717 100644
--- a/man/withTags.Rd
+++ b/man/withTags.Rd
@@ -39,4 +39,3 @@ withTags(
}
-
diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp
index 792e3d1..29e6404 100644
--- a/src/RcppExports.cpp
+++ b/src/RcppExports.cpp
@@ -1,4 +1,4 @@
-// This file was generated by Rcpp::compileAttributes
+// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
#include <Rcpp.h>
@@ -9,10 +9,10 @@ using namespace Rcpp;
std::vector<std::string> template_dfa(CharacterVector x);
RcppExport SEXP htmltools_template_dfa(SEXP xSEXP) {
BEGIN_RCPP
- Rcpp::RObject __result;
- Rcpp::RNGScope __rngScope;
+ Rcpp::RObject rcpp_result_gen;
+ Rcpp::RNGScope rcpp_rngScope_gen;
Rcpp::traits::input_parameter< CharacterVector >::type x(xSEXP);
- __result = Rcpp::wrap(template_dfa(x));
- return __result;
+ rcpp_result_gen = Rcpp::wrap(template_dfa(x));
+ return rcpp_result_gen;
END_RCPP
}
diff --git a/src/init.c b/src/init.c
new file mode 100644
index 0000000..a1ca19b
--- /dev/null
+++ b/src/init.c
@@ -0,0 +1,18 @@
+#include <R.h>
+#include <Rinternals.h>
+#include <stdlib.h> // for NULL
+#include <R_ext/Rdynload.h>
+
+/* .Call calls */
+extern SEXP htmltools_template_dfa(SEXP);
+
+static const R_CallMethodDef CallEntries[] = {
+ {"htmltools_template_dfa", (DL_FUNC) &htmltools_template_dfa, 1},
+ {NULL, NULL, 0}
+};
+
+void R_init_htmltools(DllInfo *dll)
+{
+ R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
+ R_useDynamicSymbols(dll, FALSE);
+}
diff --git a/tests/testthat/template-basic.html b/tests/testthat/template-basic.html
new file mode 100644
index 0000000..cf42346
--- /dev/null
+++ b/tests/testthat/template-basic.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+{{ headContent() }}
+</head>
+<body>
+{{ body }}
+</body>
+</html>
diff --git a/tests/testthat/test-tags.r b/tests/testthat/test-tags.r
index 250087d..80b6adc 100644
--- a/tests/testthat/test-tags.r
+++ b/tests/testthat/test-tags.r
@@ -168,12 +168,24 @@ test_that("Creating simple tags", {
div(b = "value")
)
+ # length-0 attributes are dropped
+ expect_identical(
+ div(a = character(), b = "value"),
+ div(b = "value")
+ )
+
# NULL children are dropped
expect_identical(
renderTags(div("foo", NULL, list(NULL, list(NULL, "bar"))))$html,
renderTags(div("foo", "bar"))$html
)
+ # length-0 children are dropped
+ expect_identical(
+ renderTags(div("foo", character(), list(character(), list(list(), "bar"))))$html,
+ renderTags(div("foo", "bar"))$html
+ )
+
# Numbers are coerced to strings
expect_identical(
renderTags(div(1234))$html,
@@ -590,7 +602,7 @@ test_that("cssList tests", {
expect_error(css(1, b=2))
# NULL and empty string are dropped
- expect_identical(css(a="", b = NULL, "c!" = NULL), "")
+ expect_identical(css(a="", b = NULL, "c!" = NULL, d = character()), "")
# We are dumb about duplicated properties. Probably don't do that.
expect_identical(css(a=1, a=2), "a:1;a:2;")
diff --git a/tests/testthat/test-template.R b/tests/testthat/test-template.R
index 176c2df..7913bc9 100644
--- a/tests/testthat/test-template.R
+++ b/tests/testthat/test-template.R
@@ -46,6 +46,27 @@ test_that("UTF-8 characters in templates", {
expect_identical(charToRaw(text), as.raw(c(0xc3, 0xbf)))
})
+test_that("UTF-8 characters in template head but not body", {
+ # On Windows, a string with "中文" will automatically be marked as UTF-8.
+ ui <- tagList(
+ tags$head(tags$script("alert('中文')")),
+ "test"
+ )
+ html <- htmlTemplate("template-basic.html", body = ui)
+ res <- renderDocument(html)
+ expect_identical(Encoding(res), "UTF-8")
+ expect_true(grepl("中文", res, fixed = TRUE))
+
+ # On Windows, a string with "á" will automatically be marked as latin1.
+ ui <- tagList(
+ tags$head(tags$script("alert('á')")),
+ "test"
+ )
+ html <- htmlTemplate("template-basic.html", body = ui)
+ res <- renderDocument(html)
+ expect_identical(Encoding(res), "UTF-8")
+ expect_true(grepl("á", res, fixed = TRUE))
+})
test_that("Dependencies are added properly", {
dep <- htmlDependency("d3", "3.5.10", c(href="shared"), script = "d3.js")
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/r-cran-htmltools.git
More information about the debian-med-commit
mailing list