From 6267500002faa51bc291960bf2dacc0d7e1d182b Mon Sep 17 00:00:00 2001 From: Carson Sievert Date: Wed, 18 Jan 2017 14:43:29 -0600 Subject: [PATCH 1/2] An htmlwidget method for getDependency() --- NAMESPACE | 2 ++ R/utils.R | 14 ++++++++++++-- man/getDependency.Rd | 6 +++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index c37ce80f..1bcda64e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,6 +1,8 @@ # Generated by roxygen2: do not edit by hand S3method(as.tags,htmlwidget) +S3method(getDependency,character) +S3method(getDependency,htmlwidget) S3method(print,htmlwidget) S3method(print,suppress_viewer) export(JS) diff --git a/R/utils.R b/R/utils.R index 4cd2a8a4..c592e0bd 100644 --- a/R/utils.R +++ b/R/utils.R @@ -36,12 +36,22 @@ toJSON <- function(x) { structure(res, class = 'json') } -#' Get js and css dependencies for a htmlwidget +#' Get js and css dependencies for an htmlwidget #' -#' @param name name of the widget. +#' @param name either an htmlwidget object or the name of a widget. #' @param package name of the package, defaults to the widget name. #' @export getDependency <- function(name, package = name){ + UseMethod("getDependency") +} + +#' @export +getDependency.htmlwidget <- function(name, package = name){ + getDependency.character(class(name)[1], package = attr(name, "package")) +} + +#' @export +getDependency.character <- function(name, package = name){ config = sprintf("htmlwidgets/%s.yaml", name) jsfile = sprintf("htmlwidgets/%s.js", name) diff --git a/man/getDependency.Rd b/man/getDependency.Rd index eb5dd2bc..4590a73c 100644 --- a/man/getDependency.Rd +++ b/man/getDependency.Rd @@ -2,16 +2,16 @@ % Please edit documentation in R/utils.R \name{getDependency} \alias{getDependency} -\title{Get js and css dependencies for a htmlwidget} +\title{Get js and css dependencies for an htmlwidget} \usage{ getDependency(name, package = name) } \arguments{ -\item{name}{name of the widget.} +\item{name}{either an htmlwidget object or the name of a widget.} \item{package}{name of the package, defaults to the widget name.} } \description{ -Get js and css dependencies for a htmlwidget +Get js and css dependencies for an htmlwidget } From d83dd5b4d7b841d8cca13678bfe1bdbf38a88c62 Mon Sep 17 00:00:00 2001 From: Carson Sievert Date: Wed, 18 Jan 2017 14:44:12 -0600 Subject: [PATCH 2/2] eliminate the redundant widget_dependency function --- R/htmlwidgets.R | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/R/htmlwidgets.R b/R/htmlwidgets.R index 5a7ca032..3bfd50b9 100644 --- a/R/htmlwidgets.R +++ b/R/htmlwidgets.R @@ -206,9 +206,8 @@ toHTML <- function(x, standalone = FALSE, knitrOptions = NULL) { ) } ) - html <- htmltools::attachDependencies(html, - c(widget_dependencies(class(x)[1], attr(x, 'package')), - x$dependencies) + html <- htmltools::attachDependencies( + html, c(getDependency(x), x$dependencies) ) htmltools::browsable(html) @@ -234,10 +233,6 @@ widget_html <- function(name, package, id, style, class, inline = FALSE, ...){ } } -widget_dependencies <- function(name, package){ - getDependency(name, package) -} - # Generates a