v0.1.0
This is epoxy's first release on CRAN! This NEWS file collects changes from versions that were available on GitHub prior to the CRAN release.
Breaking Changes
-
epoxy's knitr engine is now
epoxy
and notglue
. This avoids a name clash with the glue package, which provides aglue
knitr engine with similar functionality. epoxy also providesepoxy_html
andepoxy_latex
knitr engines, although they can still be used via their aliasesglue_html
andglue_latex
. (#21) -
The development version of epoxy included, for some time, two features that have changed significantly in this release:
-
The
epoxy_style()
functions were renamedepoxy_transform()
and the.style
argument was deprecated in favor of the.transformer
argument. This change was made to avoid confusion with other meanings of "style", and for consistency withglue::glue()
. Theepoxy_style_
prefix is nowepoxy_transform_
, e.g.epoxy_transform_bold()
orepoxy_transform_collapse()
. (#87) -
The previous form of inline formatting --
epoxy_style_format()
-- has been removed in favor ofepoxy_transform_inline()
. This new transformer uses cli-style inline formatting and is enabled by default inepoxy()
,epoxy_html()
andepoxy_latex()
(#68).
-
-
epoxy_transform_html()
now returns a character vector rather than a collapsed character string when a template expression is a vector.
New Features
-
Added a new internal dataset,
bechdel
, containing details for a random sample of ten movies that received a score of 3 on the Bechdel Test (#24). -
epoxy's transformers can now be chained via
epoxy_transform()
. For example to use bothepoxy_transform_bold()
andepoxy_transform_collapse()
on all replacement strings, you can callepoxy_transform("bold", "collapse")
.epoxy_transform()
accepts a transform function name, e.g."collapse"
, the function object directly, e.g.epoxy_transform_collapse
, or a call to a transform function, e.g.epoxy_transform_collapse()
(#26). -
Values passed to the
.transformer
chunk option are now passed first toepoxy_transform()
, allowing you to provide a vector of transformer names or a list of functions, e.g..transformer = c("bold", "collapse")
. This was originally introduced using a separate chunk optionepoxy_style
, which is now deprecated (#31, #87). -
epoxy
,epoxy_html()
andepoxy_latex()
are now exported functions that power the knitr engines and use the same defaults (#46). -
The HTML element syntax used in
ui_epoxy_html()
is now available inepoxy_transform_html()
and is used by default inepoxy_html()
(#46). -
The HTML syntax used by
ui_epoxy_html()
andepoxy_html()
now provides a mechanism for differentiating between HTML-safe and -unsafe content. To mark an expression as HTML-safe, use!!
before the variable or expression: e.g.{{ button !!expr }}
(#88). -
A new
ui_epoxy_markdown()
function provides a way to create dynamic Shiny UI elements written in Markdown. Rendering from markdown to HTML is handled usingpandoc::pandoc_convert()
if the{pandoc}
package is installed, or otherwisecommonmark::markdown_html()
is used. -
New
ui_epoxy_mustache()
provides a dynamically rendered Shiny UI element that uses the mustache templating syntax. The advantage of mustache templating overui_epoxy_html()
is that you have dynamic variables in the template can appear anywhere in the HTML, not just in the text portion (#51).ui_epoxy_whisker()
is also provided as an alias for discoverability/user comfort (#60).
-
epoxyHTML()
andrenderEpoxyHTML()
were renamedui_epoxy_html()
andrender_epoxy()
respectively. This better fits newer Shiny naming conventions and reflects thatrender_epoxy()
serves bothui_epoxy_html()
andui_epoxy_mustache()
(#56). -
Added
epoxy_transform_set()
to enable setting the default.transformer
option for all chunks or epoxy functions. You can use this function to set the epoxy transformer for all chunk engines or a subset of chunk engines. Useepoxy_transform_get()
to retrieve the epoxy transformer for a particular engine.You can also use
epoxy_transform_set()
to set the inline transformation functions by matching the syntax used byepoxy_transform_inline()
. See?epoxy_transform_set
for an example. -
epoxy_transform_inline()
is the default.transformer
forepoxy()
andepoxy_latex()
and their related knitr engines.epoxy_html()
now uses.transformer = epoxy_transform(c("inline", "html"))
.
Improvements and Bug Fixes
-
Added a new
vignette("inline-reporting")
with thanks to @tjmahr for the inspiration (#25). -
epoxy requires glue >= 1.5.0.
-
ui_epoxy_html()
will now render elements with IDs using the#
syntax, e.g.{{h3#name.author full_name}}
will create an element that is (essentially)<h3 id="name" class="author">{{ full_name }}</h3>
(#22). -
ui_epoxy_html()
, instead of updating the entireui_epoxy_html()
region, now only updates the part of the UI that has actually changed. If the template variables are only included in the text portion of the template, you should preferui_epoxy_html()
overui_epoxy_mustache()
for this reason --ui_epoxy_mustache()
re-renders the entire template with every update. -
The epoxy transformers for bold, italic and code transformations now choose the correct syntax for the
epoxy
(markdown),epoxy_html
andepoxy_latex
engines. Alternatively, you can force the desired syntax by setting thesyntax
option (#28). -
epoxy's knitr engines can now be set manually via the newly exported (and renamed)
use_epoxy_knitr_engines()
. This function is called when epoxy is loaded, so you most likely do not need to call it directly. In general, you can instead simplylibrary(epoxy)
. epoxy previously provided aglue
chunk rather than anepoxy
chunk and you can restore this behavior by callinguse_epoxy_glue_engine()
(#30). -
A new transformer,
epoxy_transform_apply()
, can be used to globally apply a function to glue expressions.epoxy_transform_apply()
uses the same syntax aspurrr::map()
for defining the function, i.e.tolower
or~ tolower(.x)
(#37). -
epoxy_transform_collapse()
now uses the and package, which provides language-aware conjoining of strings. As a result, thesep_and
andsep_or
arguments ofepoxy_transform_collapse()
are deprecated and are silently ignored if provided (#45). -
Added
engine_pick()
for providing a set of options where the correct option will be chosen based on the current chunk or epoxy engine.