From 7101b69b461d4735fb129ef6818d606935f8e1f1 Mon Sep 17 00:00:00 2001 From: gadenbuie Date: Wed, 17 Apr 2024 12:36:59 +0000 Subject: [PATCH] cli-154-522 --- dev/CODE_OF_CONDUCT.html | 129 ++++--- dev/LICENSE-text.html | 126 ++++--- dev/LICENSE.html | 128 ++++--- dev/articles/epoxy-report.html | 254 +++++++------ dev/articles/epoxy-script.html | 148 ++++---- dev/articles/epoxy-shiny.html | 217 ++++++----- dev/articles/epoxy.html | 148 ++++---- dev/articles/index.html | 122 ++++--- dev/articles/inline-reporting.html | 247 +++++++------ dev/authors.html | 146 ++++---- dev/bootstrap-toc.css | 60 +++ dev/bootstrap-toc.js | 159 ++++++++ dev/docsearch.css | 148 ++++++++ dev/docsearch.js | 85 +++++ dev/index.html | 155 ++++---- dev/news/index.html | 137 ++++--- dev/pkgdown.css | 384 ++++++++++++++++++++ dev/pkgdown.js | 172 ++++----- dev/pkgdown.yml | 6 +- dev/reference/bechdel.html | 145 ++++---- dev/reference/engine_pick.html | 151 ++++---- dev/reference/epoxy-package.html | 142 ++++---- dev/reference/epoxy.html | 172 +++++---- dev/reference/epoxy_mustache.html | 164 ++++----- dev/reference/epoxy_style.html | 148 ++++---- dev/reference/epoxy_transform.html | 169 +++++---- dev/reference/epoxy_transform_html.html | 190 +++++----- dev/reference/epoxy_transform_inline.html | 214 +++++------ dev/reference/epoxy_transform_one_shot.html | 153 ++++---- dev/reference/epoxy_use.html | 204 ++++++----- dev/reference/index.html | 350 ++++++++---------- dev/reference/render_epoxy.html | 163 +++++---- dev/reference/run_epoxy_example_app.html | 153 ++++---- dev/reference/ui_epoxy_html.html | 172 +++++---- dev/reference/ui_epoxy_markdown.html | 158 ++++---- dev/reference/ui_epoxy_mustache.html | 168 +++++---- dev/reference/use_epoxy_knitr_engines.html | 176 +++++---- dev/sitemap.xml | 60 +-- 38 files changed, 3629 insertions(+), 2594 deletions(-) create mode 100644 dev/bootstrap-toc.css create mode 100644 dev/bootstrap-toc.js create mode 100644 dev/docsearch.css create mode 100644 dev/docsearch.js create mode 100644 dev/pkgdown.css diff --git a/dev/CODE_OF_CONDUCT.html b/dev/CODE_OF_CONDUCT.html index 1b2ae13b..4826a3e4 100644 --- a/dev/CODE_OF_CONDUCT.html +++ b/dev/CODE_OF_CONDUCT.html @@ -1,74 +1,82 @@ -Contributor Covenant Code of Conduct • epoxyContributor Covenant Code of Conduct • epoxy - Skip to contents + -
-
-
+ + + - + diff --git a/dev/LICENSE-text.html b/dev/LICENSE-text.html index 972e0049..97933caa 100644 --- a/dev/LICENSE-text.html +++ b/dev/LICENSE-text.html @@ -1,94 +1,112 @@ -License • epoxyLicense • epoxy - Skip to contents + -
-
-
+
+ + + +
+ -
+ + + - + diff --git a/dev/LICENSE.html b/dev/LICENSE.html index 47389829..f563b88e 100644 --- a/dev/LICENSE.html +++ b/dev/LICENSE.html @@ -1,74 +1,82 @@ -MIT License • epoxyMIT License • epoxy - Skip to contents + -
-
-
+
+ + + + + - + + + - + diff --git a/dev/articles/epoxy-report.html b/dev/articles/epoxy-report.html index c02f74cc..f3dd5143 100644 --- a/dev/articles/epoxy-report.html +++ b/dev/articles/epoxy-report.html @@ -4,8 +4,7 @@ - - + epoxy in Reports • epoxy @@ -13,13 +12,12 @@ - - - - - + + + - + + @@ -31,85 +29,96 @@ - - Skip to contents + -
- - + +
+ + -
-
+ + + + - - - - + + + + diff --git a/dev/articles/epoxy-script.html b/dev/articles/epoxy-script.html index 914ccce5..ff2e49dd 100644 --- a/dev/articles/epoxy-script.html +++ b/dev/articles/epoxy-script.html @@ -4,8 +4,7 @@ - - + epoxy in R scripts • epoxy @@ -13,13 +12,12 @@ - - - - - + + + - + + @@ -31,85 +29,96 @@ - - Skip to contents + -
- - + +
+ + -
-
+
+ + + - - - + + + + diff --git a/dev/articles/epoxy-shiny.html b/dev/articles/epoxy-shiny.html index 707eb753..e1827e96 100644 --- a/dev/articles/epoxy-shiny.html +++ b/dev/articles/epoxy-shiny.html @@ -4,8 +4,7 @@ - - + epoxy in Shiny • epoxy @@ -13,13 +12,12 @@ - - - - - + + + - + + @@ -31,85 +29,96 @@ - - Skip to contents + -
- - + +
+ + -
-
- - - + + + + diff --git a/dev/articles/epoxy.html b/dev/articles/epoxy.html index e5a92f16..cff696c1 100644 --- a/dev/articles/epoxy.html +++ b/dev/articles/epoxy.html @@ -4,8 +4,7 @@ - - + epoxy • epoxy @@ -13,13 +12,12 @@ - - - - - + + + - + + @@ -31,85 +29,96 @@ - - Skip to contents + -
- - + +
+ + -
-
- - + + + + diff --git a/dev/articles/index.html b/dev/articles/index.html index a0004a21..5c6619d3 100644 --- a/dev/articles/index.html +++ b/dev/articles/index.html @@ -1,73 +1,82 @@ -Articles • epoxyArticles • epoxy - Skip to contents + -
-
-
+
+
- + + + - + diff --git a/dev/articles/inline-reporting.html b/dev/articles/inline-reporting.html index 62f07602..7fafef1c 100644 --- a/dev/articles/inline-reporting.html +++ b/dev/articles/inline-reporting.html @@ -4,8 +4,7 @@ - - + Inline Reporting • epoxy @@ -13,13 +12,12 @@ - - - - - + + + - + + @@ -31,85 +29,96 @@ - - Skip to contents + -
- - + +
+ + -
-
+
+ + + - - - + + + + diff --git a/dev/authors.html b/dev/authors.html index c3617be4..4c4e48b2 100644 --- a/dev/authors.html +++ b/dev/authors.html @@ -1,77 +1,85 @@ -Authors and Citation • epoxyAuthors and Citation • epoxy - Skip to contents + -
-
-
+ + +
+
+
+ -
-

Authors

+
+
+

Citation

+ Source: DESCRIPTION +
+
-
-

Citation

-

Source: DESCRIPTION

-

Aden-Buie G (2023). +

Aden-Buie G (2024). epoxy: String Interpolation for Documents, Reports and Apps. R package version 1.0.0.9000, https://github.com/gadenbuie/epoxy, https://pkg.garrickadenbuie.com/epoxy/.

-
@Manual{,
+    
@Manual{,
   title = {epoxy: String Interpolation for Documents, Reports and Apps},
   author = {Garrick Aden-Buie},
-  year = {2023},
+  year = {2024},
   note = {R package version 1.0.0.9000, 
 https://github.com/gadenbuie/epoxy},
   url = {https://pkg.garrickadenbuie.com/epoxy/},
 }
-
-
+
- + + + - + diff --git a/dev/bootstrap-toc.css b/dev/bootstrap-toc.css new file mode 100644 index 00000000..5a859415 --- /dev/null +++ b/dev/bootstrap-toc.css @@ -0,0 +1,60 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ + +/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ + +/* All levels of nav */ +nav[data-toggle='toc'] .nav > li > a { + display: block; + padding: 4px 20px; + font-size: 13px; + font-weight: 500; + color: #767676; +} +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 19px; + color: #563d7c; + text-decoration: none; + background-color: transparent; + border-left: 1px solid #563d7c; +} +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 18px; + font-weight: bold; + color: #563d7c; + background-color: transparent; + border-left: 2px solid #563d7c; +} + +/* Nav: second level (shown on .active) */ +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} +nav[data-toggle='toc'] .nav .nav > li > a { + padding-top: 1px; + padding-bottom: 1px; + padding-left: 30px; + font-size: 12px; + font-weight: normal; +} +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 29px; +} +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 28px; + font-weight: 500; +} + +/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ +nav[data-toggle='toc'] .nav > .active > ul { + display: block; +} diff --git a/dev/bootstrap-toc.js b/dev/bootstrap-toc.js new file mode 100644 index 00000000..1cdd573b --- /dev/null +++ b/dev/bootstrap-toc.js @@ -0,0 +1,159 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ +(function() { + 'use strict'; + + window.Toc = { + helpers: { + // return all matching elements in the set, or their descendants + findOrFilter: function($el, selector) { + // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ + // http://stackoverflow.com/a/12731439/358804 + var $descendants = $el.find(selector); + return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); + }, + + generateUniqueIdBase: function(el) { + var text = $(el).text(); + var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); + return anchor || el.tagName.toLowerCase(); + }, + + generateUniqueId: function(el) { + var anchorBase = this.generateUniqueIdBase(el); + for (var i = 0; ; i++) { + var anchor = anchorBase; + if (i > 0) { + // add suffix + anchor += '-' + i; + } + // check if ID already exists + if (!document.getElementById(anchor)) { + return anchor; + } + } + }, + + generateAnchor: function(el) { + if (el.id) { + return el.id; + } else { + var anchor = this.generateUniqueId(el); + el.id = anchor; + return anchor; + } + }, + + createNavList: function() { + return $(''); + }, + + createChildNavList: function($parent) { + var $childList = this.createNavList(); + $parent.append($childList); + return $childList; + }, + + generateNavEl: function(anchor, text) { + var $a = $(''); + $a.attr('href', '#' + anchor); + $a.text(text); + var $li = $('
  • '); + $li.append($a); + return $li; + }, + + generateNavItem: function(headingEl) { + var anchor = this.generateAnchor(headingEl); + var $heading = $(headingEl); + var text = $heading.data('toc-text') || $heading.text(); + return this.generateNavEl(anchor, text); + }, + + // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). + getTopLevel: function($scope) { + for (var i = 1; i <= 6; i++) { + var $headings = this.findOrFilter($scope, 'h' + i); + if ($headings.length > 1) { + return i; + } + } + + return 1; + }, + + // returns the elements for the top level, and the next below it + getHeadings: function($scope, topLevel) { + var topSelector = 'h' + topLevel; + + var secondaryLevel = topLevel + 1; + var secondarySelector = 'h' + secondaryLevel; + + return this.findOrFilter($scope, topSelector + ',' + secondarySelector); + }, + + getNavLevel: function(el) { + return parseInt(el.tagName.charAt(1), 10); + }, + + populateNav: function($topContext, topLevel, $headings) { + var $context = $topContext; + var $prevNav; + + var helpers = this; + $headings.each(function(i, el) { + var $newNav = helpers.generateNavItem(el); + var navLevel = helpers.getNavLevel(el); + + // determine the proper $context + if (navLevel === topLevel) { + // use top level + $context = $topContext; + } else if ($prevNav && $context === $topContext) { + // create a new level of the tree and switch to it + $context = helpers.createChildNavList($prevNav); + } // else use the current $context + + $context.append($newNav); + + $prevNav = $newNav; + }); + }, + + parseOps: function(arg) { + var opts; + if (arg.jquery) { + opts = { + $nav: arg + }; + } else { + opts = arg; + } + opts.$scope = opts.$scope || $(document.body); + return opts; + } + }, + + // accepts a jQuery object, or an options object + init: function(opts) { + opts = this.helpers.parseOps(opts); + + // ensure that the data attribute is in place for styling + opts.$nav.attr('data-toggle', 'toc'); + + var $topContext = this.helpers.createChildNavList(opts.$nav); + var topLevel = this.helpers.getTopLevel(opts.$scope); + var $headings = this.helpers.getHeadings(opts.$scope, topLevel); + this.helpers.populateNav($topContext, topLevel, $headings); + } + }; + + $(function() { + $('nav[data-toggle="toc"]').each(function(i, el) { + var $nav = $(el); + Toc.init($nav); + }); + }); +})(); diff --git a/dev/docsearch.css b/dev/docsearch.css new file mode 100644 index 00000000..e5f1fe1d --- /dev/null +++ b/dev/docsearch.css @@ -0,0 +1,148 @@ +/* Docsearch -------------------------------------------------------------- */ +/* + Source: https://github.com/algolia/docsearch/ + License: MIT +*/ + +.algolia-autocomplete { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.algolia-autocomplete .ds-dropdown-menu { + width: 100%; + min-width: none; + max-width: none; + padding: .75rem 0; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .1); + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); +} + +@media (min-width:768px) { + .algolia-autocomplete .ds-dropdown-menu { + width: 175% + } +} + +.algolia-autocomplete .ds-dropdown-menu::before { + display: none +} + +.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { + padding: 0; + background-color: rgb(255,255,255); + border: 0; + max-height: 80vh; +} + +.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { + margin-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion { + padding: 0; + overflow: visible +} + +.algolia-autocomplete .algolia-docsearch-suggestion--category-header { + padding: .125rem 1rem; + margin-top: 0; + font-size: 1.3em; + font-weight: 500; + color: #00008B; + border-bottom: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { + float: none; + padding-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { + float: none; + width: auto; + padding: 0; + text-align: left +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content { + float: none; + width: auto; + padding: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content::before { + display: none +} + +.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { + padding-top: .75rem; + margin-top: .75rem; + border-top: 1px solid rgba(0, 0, 0, .1) +} + +.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { + display: block; + padding: .1rem 1rem; + margin-bottom: 0.1; + font-size: 1.0em; + font-weight: 400 + /* display: none */ +} + +.algolia-autocomplete .algolia-docsearch-suggestion--title { + display: block; + padding: .25rem 1rem; + margin-bottom: 0; + font-size: 0.9em; + font-weight: 400 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--text { + padding: 0 1rem .5rem; + margin-top: -.25rem; + font-size: 0.8em; + font-weight: 400; + line-height: 1.25 +} + +.algolia-autocomplete .algolia-docsearch-footer { + width: 110px; + height: 20px; + z-index: 3; + margin-top: 10.66667px; + float: right; + font-size: 0; + line-height: 0; +} + +.algolia-autocomplete .algolia-docsearch-footer--logo { + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-position: 50%; + background-size: 100%; + overflow: hidden; + text-indent: -9000px; + width: 100%; + height: 100%; + display: block; + transform: translate(-8px); +} + +.algolia-autocomplete .algolia-docsearch-suggestion--highlight { + color: #FF8C00; + background: rgba(232, 189, 54, 0.1) +} + + +.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { + box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) +} + +.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { + background-color: rgba(192, 192, 192, .15) +} diff --git a/dev/docsearch.js b/dev/docsearch.js new file mode 100644 index 00000000..b35504cd --- /dev/null +++ b/dev/docsearch.js @@ -0,0 +1,85 @@ +$(function() { + + // register a handler to move the focus to the search bar + // upon pressing shift + "/" (i.e. "?") + $(document).on('keydown', function(e) { + if (e.shiftKey && e.keyCode == 191) { + e.preventDefault(); + $("#search-input").focus(); + } + }); + + $(document).ready(function() { + // do keyword highlighting + /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ + var mark = function() { + + var referrer = document.URL ; + var paramKey = "q" ; + + if (referrer.indexOf("?") !== -1) { + var qs = referrer.substr(referrer.indexOf('?') + 1); + var qs_noanchor = qs.split('#')[0]; + var qsa = qs_noanchor.split('&'); + var keyword = ""; + + for (var i = 0; i < qsa.length; i++) { + var currentParam = qsa[i].split('='); + + if (currentParam.length !== 2) { + continue; + } + + if (currentParam[0] == paramKey) { + keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); + } + } + + if (keyword !== "") { + $(".contents").unmark({ + done: function() { + $(".contents").mark(keyword); + } + }); + } + } + }; + + mark(); + }); +}); + +/* Search term highlighting ------------------------------*/ + +function matchedWords(hit) { + var words = []; + + var hierarchy = hit._highlightResult.hierarchy; + // loop to fetch from lvl0, lvl1, etc. + for (var idx in hierarchy) { + words = words.concat(hierarchy[idx].matchedWords); + } + + var content = hit._highlightResult.content; + if (content) { + words = words.concat(content.matchedWords); + } + + // return unique words + var words_uniq = [...new Set(words)]; + return words_uniq; +} + +function updateHitURL(hit) { + + var words = matchedWords(hit); + var url = ""; + + if (hit.anchor) { + url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; + } else { + url = hit.url + '?q=' + escape(words.join(" ")); + } + + return url; +} diff --git a/dev/index.html b/dev/index.html index 53be41cd..91f396c5 100644 --- a/dev/index.html +++ b/dev/index.html @@ -4,10 +4,7 @@ - - + String Interpolation for Documents, Reports and Apps • epoxy @@ -15,16 +12,13 @@ - - - - - + + + - - + + + @@ -35,81 +29,93 @@ - - Skip to contents + -
    -
    -
    - + + + + +
    +
    +
    +
    @@ -211,7 +217,10 @@

    Installationinstall.packages("epoxy")

    -
    +
    - - - + + + + diff --git a/dev/news/index.html b/dev/news/index.html index c981ec22..3335f6c0 100644 --- a/dev/news/index.html +++ b/dev/news/index.html @@ -1,81 +1,90 @@ -Changelog • epoxyChangelog • epoxy - Skip to contents + -
    -
    -
    +
    + - + + + - + diff --git a/dev/pkgdown.css b/dev/pkgdown.css new file mode 100644 index 00000000..80ea5b83 --- /dev/null +++ b/dev/pkgdown.css @@ -0,0 +1,384 @@ +/* Sticky footer */ + +/** + * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ + * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css + * + * .Site -> body > .container + * .Site-content -> body > .container .row + * .footer -> footer + * + * Key idea seems to be to ensure that .container and __all its parents__ + * have height set to 100% + * + */ + +html, body { + height: 100%; +} + +body { + position: relative; +} + +body > .container { + display: flex; + height: 100%; + flex-direction: column; +} + +body > .container .row { + flex: 1 0 auto; +} + +footer { + margin-top: 45px; + padding: 35px 0 36px; + border-top: 1px solid #e5e5e5; + color: #666; + display: flex; + flex-shrink: 0; +} +footer p { + margin-bottom: 0; +} +footer div { + flex: 1; +} +footer .pkgdown { + text-align: right; +} +footer p { + margin-bottom: 0; +} + +img.icon { + float: right; +} + +/* Ensure in-page images don't run outside their container */ +.contents img { + max-width: 100%; + height: auto; +} + +/* Fix bug in bootstrap (only seen in firefox) */ +summary { + display: list-item; +} + +/* Typographic tweaking ---------------------------------*/ + +.contents .page-header { + margin-top: calc(-60px + 1em); +} + +dd { + margin-left: 3em; +} + +/* Section anchors ---------------------------------*/ + +a.anchor { + display: none; + margin-left: 5px; + width: 20px; + height: 20px; + + background-image: url(./link.svg); + background-repeat: no-repeat; + background-size: 20px 20px; + background-position: center center; +} + +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +h5:hover .anchor, +h6:hover .anchor { + display: inline-block; +} + +/* Fixes for fixed navbar --------------------------*/ + +.contents h1, .contents h2, .contents h3, .contents h4 { + padding-top: 60px; + margin-top: -40px; +} + +/* Navbar submenu --------------------------*/ + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu>.dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover>.dropdown-menu { + display: block; +} + +.dropdown-submenu>a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} + +.dropdown-submenu:hover>a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left>.dropdown-menu { + left: -100%; + margin-left: 10px; + border-radius: 6px 0 6px 6px; +} + +/* Sidebar --------------------------*/ + +#pkgdown-sidebar { + margin-top: 30px; + position: -webkit-sticky; + position: sticky; + top: 70px; +} + +#pkgdown-sidebar h2 { + font-size: 1.5em; + margin-top: 1em; +} + +#pkgdown-sidebar h2:first-child { + margin-top: 0; +} + +#pkgdown-sidebar .list-unstyled li { + margin-bottom: 0.5em; +} + +/* bootstrap-toc tweaks ------------------------------------------------------*/ + +/* All levels of nav */ + +nav[data-toggle='toc'] .nav > li > a { + padding: 4px 20px 4px 6px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; +} + +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 5px; + color: inherit; + border-left: 1px solid #878787; +} + +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 5px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; + border-left: 2px solid #878787; +} + +/* Nav: second level (shown on .active) */ + +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} + +nav[data-toggle='toc'] .nav .nav > li > a { + padding-left: 16px; + font-size: 1.35rem; +} + +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 15px; +} + +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 15px; + font-weight: 500; + font-size: 1.35rem; +} + +/* orcid ------------------------------------------------------------------- */ + +.orcid { + font-size: 16px; + color: #A6CE39; + /* margins are required by official ORCID trademark and display guidelines */ + margin-left:4px; + margin-right:4px; + vertical-align: middle; +} + +/* Reference index & topics ----------------------------------------------- */ + +.ref-index th {font-weight: normal;} + +.ref-index td {vertical-align: top; min-width: 100px} +.ref-index .icon {width: 40px;} +.ref-index .alias {width: 40%;} +.ref-index-icons .alias {width: calc(40% - 40px);} +.ref-index .title {width: 60%;} + +.ref-arguments th {text-align: right; padding-right: 10px;} +.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px} +.ref-arguments .name {width: 20%;} +.ref-arguments .desc {width: 80%;} + +/* Nice scrolling for wide elements --------------------------------------- */ + +table { + display: block; + overflow: auto; +} + +/* Syntax highlighting ---------------------------------------------------- */ + +pre, code, pre code { + background-color: #f8f8f8; + color: #333; +} +pre, pre code { + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; +} + +pre { + border: 1px solid #eee; +} + +pre .img, pre .r-plt { + margin: 5px 0; +} + +pre .img img, pre .r-plt img { + background-color: #fff; +} + +code a, pre a { + color: #375f84; +} + +a.sourceLine:hover { + text-decoration: none; +} + +.fl {color: #1514b5;} +.fu {color: #000000;} /* function */ +.ch,.st {color: #036a07;} /* string */ +.kw {color: #264D66;} /* keyword */ +.co {color: #888888;} /* comment */ + +.error {font-weight: bolder;} +.warning {font-weight: bolder;} + +/* Clipboard --------------------------*/ + +.hasCopyButton { + position: relative; +} + +.btn-copy-ex { + position: absolute; + right: 0; + top: 0; + visibility: hidden; +} + +.hasCopyButton:hover button.btn-copy-ex { + visibility: visible; +} + +/* headroom.js ------------------------ */ + +.headroom { + will-change: transform; + transition: transform 200ms linear; +} +.headroom--pinned { + transform: translateY(0%); +} +.headroom--unpinned { + transform: translateY(-100%); +} + +/* mark.js ----------------------------*/ + +mark { + background-color: rgba(255, 255, 51, 0.5); + border-bottom: 2px solid rgba(255, 153, 51, 0.3); + padding: 1px; +} + +/* vertical spacing after htmlwidgets */ +.html-widget { + margin-bottom: 10px; +} + +/* fontawesome ------------------------ */ + +.fab { + font-family: "Font Awesome 5 Brands" !important; +} + +/* don't display links in code chunks when printing */ +/* source: https://stackoverflow.com/a/10781533 */ +@media print { + code a:link:after, code a:visited:after { + content: ""; + } +} + +/* Section anchors --------------------------------- + Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71 +*/ + +div.csl-bib-body { } +div.csl-entry { + clear: both; +} +.hanging-indent div.csl-entry { + margin-left:2em; + text-indent:-2em; +} +div.csl-left-margin { + min-width:2em; + float:left; +} +div.csl-right-inline { + margin-left:2em; + padding-left:1em; +} +div.csl-indent { + margin-left: 2em; +} diff --git a/dev/pkgdown.js b/dev/pkgdown.js index 5fccd9c0..6f0eee40 100644 --- a/dev/pkgdown.js +++ b/dev/pkgdown.js @@ -2,30 +2,70 @@ (function($) { $(function() { - $('nav.navbar').headroom(); + $('.navbar-fixed-top').headroom(); - Toc.init({ - $nav: $("#toc"), - $scope: $("main h2, main h3, main h4, main h5, main h6") + $('body').css('padding-top', $('.navbar').height() + 10); + $(window).resize(function(){ + $('body').css('padding-top', $('.navbar').height() + 10); }); - if ($('#toc').length) { - $('body').scrollspy({ - target: '#toc', - offset: $("nav.navbar").outerHeight() + 1 - }); + $('[data-toggle="tooltip"]').tooltip(); + + var cur_path = paths(location.pathname); + var links = $("#navbar ul li a"); + var max_length = -1; + var pos = -1; + for (var i = 0; i < links.length; i++) { + if (links[i].getAttribute("href") === "#") + continue; + // Ignore external links + if (links[i].host !== location.host) + continue; + + var nav_path = paths(links[i].pathname); + + var length = prefix_length(nav_path, cur_path); + if (length > max_length) { + max_length = length; + pos = i; + } } - // Activate popovers - $('[data-bs-toggle="popover"]').popover({ - container: 'body', - html: true, - trigger: 'focus', - placement: "top", - sanitize: false, - }); + // Add class to parent
  • , and enclosing
  • if in dropdown + if (pos >= 0) { + var menu_anchor = $(links[pos]); + menu_anchor.parent().addClass("active"); + menu_anchor.closest("li.dropdown").addClass("active"); + } + }); + + function paths(pathname) { + var pieces = pathname.split("/"); + pieces.shift(); // always starts with / + + var end = pieces[pieces.length - 1]; + if (end === "index.html" || end === "") + pieces.pop(); + return(pieces); + } + + // Returns -1 if not found + function prefix_length(needle, haystack) { + if (needle.length > haystack.length) + return(-1); - $('[data-bs-toggle="tooltip"]').tooltip(); + // Special case for length-0 haystack, since for loop won't run + if (haystack.length === 0) { + return(needle.length === 0 ? 0 : -1); + } + + for (var i = 0; i < haystack.length; i++) { + if (needle[i] != haystack[i]) + return(i); + } + + return(haystack.length); + } /* Clipboard --------------------------*/ @@ -38,7 +78,7 @@ if(ClipboardJS.isSupported()) { $(document).ready(function() { - var copyButton = ""; + var copyButton = ""; $("div.sourceCode").addClass("hasCopyButton"); @@ -49,108 +89,20 @@ $('.btn-copy-ex').tooltip({container: 'body'}); // Initialize clipboard: - var clipboard = new ClipboardJS('[data-clipboard-copy]', { + var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { text: function(trigger) { return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); } }); - clipboard.on('success', function(e) { + clipboardBtnCopies.on('success', function(e) { changeTooltipMessage(e.trigger, 'Copied!'); e.clearSelection(); }); - clipboard.on('error', function() { + clipboardBtnCopies.on('error', function() { changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); }); - }); } - - /* Search marking --------------------------*/ - var url = new URL(window.location.href); - var toMark = url.searchParams.get("q"); - var mark = new Mark("main#main"); - if (toMark) { - mark.mark(toMark, { - accuracy: { - value: "complementary", - limiters: [",", ".", ":", "/"], - } - }); - } - - /* Search --------------------------*/ - /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */ - // Initialise search index on focus - var fuse; - $("#search-input").focus(async function(e) { - if (fuse) { - return; - } - - $(e.target).addClass("loading"); - var response = await fetch($("#search-input").data("search-index")); - var data = await response.json(); - - var options = { - keys: ["what", "text", "code"], - ignoreLocation: true, - threshold: 0.1, - includeMatches: true, - includeScore: true, - }; - fuse = new Fuse(data, options); - - $(e.target).removeClass("loading"); - }); - - // Use algolia autocomplete - var options = { - autoselect: true, - debug: true, - hint: false, - minLength: 2, - }; - var q; -async function searchFuse(query, callback) { - await fuse; - - var items; - if (!fuse) { - items = []; - } else { - q = query; - var results = fuse.search(query, { limit: 20 }); - items = results - .filter((x) => x.score <= 0.75) - .map((x) => x.item); - if (items.length === 0) { - items = [{dir:"Sorry 😿",previous_headings:"",title:"No results found.",what:"No results found.",path:window.location.href}]; - } - } - callback(items); -} - $("#search-input").autocomplete(options, [ - { - name: "content", - source: searchFuse, - templates: { - suggestion: (s) => { - if (s.title == s.what) { - return `${s.dir} >
    ${s.title}
    `; - } else if (s.previous_headings == "") { - return `${s.dir} >
    ${s.title}
    > ${s.what}`; - } else { - return `${s.dir} >
    ${s.title}
    > ${s.previous_headings} > ${s.what}`; - } - }, - }, - }, - ]).on('autocomplete:selected', function(event, s) { - window.location.href = s.path + "?q=" + q + "#" + s.id; - }); - }); })(window.jQuery || window.$) - - diff --git a/dev/pkgdown.yml b/dev/pkgdown.yml index b284a1ae..cfabab6a 100644 --- a/dev/pkgdown.yml +++ b/dev/pkgdown.yml @@ -1,5 +1,5 @@ -pandoc: 2.19.2 -pkgdown: 2.0.7 +pandoc: 3.1.11 +pkgdown: 2.0.8 pkgdown_sha: ~ articles: epoxy-report: epoxy-report.html @@ -7,7 +7,7 @@ articles: epoxy-shiny: epoxy-shiny.html epoxy: epoxy.html inline-reporting: inline-reporting.html -last_built: 2023-11-03T02:04Z +last_built: 2024-04-17T12:36Z urls: reference: http://pkg.garrickadenbuie.com/epoxy/reference article: http://pkg.garrickadenbuie.com/epoxy/articles diff --git a/dev/reference/bechdel.html b/dev/reference/bechdel.html index 90372190..242619ae 100644 --- a/dev/reference/bechdel.html +++ b/dev/reference/bechdel.html @@ -1,91 +1,98 @@ -Top 10 Highest-Rated, Bechdel-Passing Movies — bechdel • epoxyTop 10 Highest-Rated, Bechdel-Passing Movies — bechdel • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    A small dataset for epoxy demonstrations with the top audience-rated movies that pass the Bechdel Test.

    -
    -

    Usage

    +
    bechdel
    -
    -

    Format

    +
    +

    Format

    A data frame with 10 rows and 18 variables:

    imdb_id

    IMDB Movie ID

    @@ -142,29 +149,35 @@

    Format<

    - +
    + +
    -
    + + + - + diff --git a/dev/reference/engine_pick.html b/dev/reference/engine_pick.html index fda8a330..d0f6d636 100644 --- a/dev/reference/engine_pick.html +++ b/dev/reference/engine_pick.html @@ -1,111 +1,116 @@ -Pick an engine-specific value — engine_pick • epoxyPick an engine-specific value — engine_pick • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    Set different values that will be used based on the current epoxy or knitr engine (one of md, html, or latex). The engine-specific value will be used inside epoxy knitr chunks or epoxy functions matching the source syntax: epoxy() (md), epoxy_html() (html), or epoxy_latex() (latex).

    -
    -

    Usage

    +
    engine_pick(md, html = md, latex = md)
    -
    -

    Arguments

    +
    +

    Arguments

    md, html, latex

    The value to use in a markdown, HTML, or LaTeX context.

    -
    -

    Value

    +
    +

    Value

    The value of md, html or latex depending on the epoxy or knitr currently being evaluated.

    -
    -

    Examples

    +
    +

    Examples

    # Markdown and HTML are okay with bare `$` character,
     # but we need to escape it in LaTeX.
     engine_pick(md = "$", latex = "\\$")
    @@ -113,21 +118,27 @@ 

    Examples

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/epoxy-package.html b/dev/reference/epoxy-package.html index eea9ac36..fd379af6 100644 --- a/dev/reference/epoxy-package.html +++ b/dev/reference/epoxy-package.html @@ -1,114 +1,128 @@ -epoxy: String Interpolation for Documents, Reports and Apps — epoxy-package • epoxyepoxy: String Interpolation for Documents, Reports and Apps — epoxy-package • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    Extra strength 'glue' for data-driven templates. String interpolation for 'Shiny' apps or 'R Markdown' and 'knitr'-powered 'Quarto' documents, built on the 'glue' and 'whisker' packages.

    -
    -

    See also

    + -
    -

    Author

    +
    +

    Author

    Maintainer: Garrick Aden-Buie garrick@adenbuie.com (ORCID)

    Other contributors:

    • Kushagra Gour (hint.css) [contributor]

    • The mustache.js community (mustache.js) [contributor]

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/epoxy.html b/dev/reference/epoxy.html index 8dafcdd5..98528a8c 100644 --- a/dev/reference/epoxy.html +++ b/dev/reference/epoxy.html @@ -1,22 +1,5 @@ -Epoxy string interpolation — epoxy • epoxyEpoxy string interpolation — epoxy • epoxy - Skip to contents - - -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    These functions power the knitr chunk engines and are wrappers around glue::glue(), with a few extra conveniences provided by epoxy.

    -
    -

    Usage

    +
    epoxy(
       ...,
       .data = NULL,
    @@ -176,12 +167,13 @@ 

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    ...

    [expressions]
    Unnamed arguments are taken to be expression string(s) to format. Multiple inputs are concatenated together before formatting. -Named arguments are taken to be temporary variables available for substitution.

    +Named arguments are taken to be temporary variables available for substitution.

    +

    For `glue_data()`, elements in `...` override the values in `.x`.

    .data
    @@ -261,16 +253,16 @@

    Arguments -

    Value

    +
    +

    Value

    Returns a transformed string, using glue::glue() but with the additional transformers provided to the .transformer argument of epoxy().

    -
    -

    See also

    +
    +

    See also

    - +
    + +

    -
    + + + - + diff --git a/dev/reference/epoxy_mustache.html b/dev/reference/epoxy_mustache.html index 4990f06e..a4aa38c5 100644 --- a/dev/reference/epoxy_mustache.html +++ b/dev/reference/epoxy_mustache.html @@ -1,19 +1,5 @@ -Mustache-style string interpolation — epoxy_mustache • epoxy - Skip to contents - - -
    -
    -
  • -
    -

    Usage

    +
    epoxy_mustache(
       ...,
       .data = parent.frame(),
    @@ -126,8 +120,8 @@ 

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    ...

    A string or a vector of strings containing the template(s). Refer to the mustache documentation for an overview @@ -160,22 +154,22 @@

    Arguments -

    Value

    +
    +

    Value

    A character vector of length 1 if .vectorized is FALSE or a character vector of the same length as the number of rows or items in .data if .vectorized is TRUE.

    -
    -

    See also

    +
    +

    See also

    Other Mustache-style template functions: ui_epoxy_mustache()

    -
    -

    Examples

    +
    +

    Examples

    # The canonical mustache example
     epoxy_mustache(
       "Hello {{name}}!",
    @@ -247,21 +241,27 @@ 

    Examples

    -
    +
    + +

    -
    + + + - + diff --git a/dev/reference/epoxy_style.html b/dev/reference/epoxy_style.html index 52fbfefa..c5194fbc 100644 --- a/dev/reference/epoxy_style.html +++ b/dev/reference/epoxy_style.html @@ -1,83 +1,91 @@ -Deprecated: epoxy_style() — epoxy_style • epoxyDeprecated: epoxy_style() — epoxy_style • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    epoxy_style() was renamed epoxy_transform() in epoxy version 0.1.0.

    -
    -

    Usage

    +
    epoxy_style(...)
     
     epoxy_style_apply(...)
    @@ -101,20 +109,20 @@ 

    Usage epoxy_style_wrap(...)

    -
    -

    Arguments

    +
    +

    Arguments

    ...

    Passed to the new epoxy_transform function.

    -
    -

    Value

    +
    +

    Value

    Returns the result of the new epoxy_transform function.

    -
    -

    Functions

    +
    +

    Functions

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/epoxy_transform.html b/dev/reference/epoxy_transform.html index 83903d89..2ad8fff0 100644 --- a/dev/reference/epoxy_transform.html +++ b/dev/reference/epoxy_transform.html @@ -1,10 +1,5 @@ -epoxy Transformers — epoxy_transform • epoxyepoxy Transformers — epoxy_transform • epoxy - Skip to contents - - -
    -
    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/epoxy_transform_html.html b/dev/reference/epoxy_transform_html.html index 0fab9abc..235f748d 100644 --- a/dev/reference/epoxy_transform_html.html +++ b/dev/reference/epoxy_transform_html.html @@ -1,35 +1,5 @@ -Concise syntax for expressions inside HTML elements — epoxy_transform_html • epoxy - Skip to contents - - -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    epoxy_transform_html() provides a pug-like syntax for expressions in HTML that are wrapped in HTML elements.

    @@ -142,10 +121,10 @@

    Syntax<

    You can specify the HTML element and its id and class into which the text of the expression will be placed. The template is to specify the element using the syntax below, followed by the R expression, separated by a space:

    -

    {{ [<element>][#<id> | .<class>...] expr }}

    +

    {{ [<element>][#<id> | .<class>...] expr }}

    For example, to place the expression in a <li> element with id = "food" and class = "fruit", you could write

    -

    {{ li#food.fruit fruit_name }}

    +

    {{ li#food.fruit fruit_name }}

    Each item in the HTML template is optional:

    1. If a specific HTML element is desired, the element name must be first. If no element is specified, the default as set by the element argument of epoxy_transform_html() will be used.

    2. @@ -161,8 +140,7 @@

      Syntax<

    -
    -

    Usage

    +
    epoxy_transform_html(
       class = NULL,
       element = "span",
    @@ -171,8 +149,8 @@ 

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    class

    [character()]
    Additional classes to be added to the inline HTML element.

    @@ -200,23 +178,23 @@

    Argumentsglue::identity_transformer() is used as the transformer.

    -
    -

    Value

    +
    +

    Value

    A function of text and envir suitable for the .transformer argument of glue::glue().

    -
    -

    See also

    +
    +

    See also

    Used by default in epoxy_html()

    Other epoxy's glue transformers: -epoxy_transform_inline(), -epoxy_transform()

    +epoxy_transform(), +epoxy_transform_inline()

    -
    -

    Examples

    +
    +

    Examples

    epoxy_html("<ul>{{ li letters[1:3] }}</ul>")
     #> <ul><li>a</li><li>b</li><li>c</li></ul>
     epoxy_html("<ul>{{ li.alpha letters[1:3] }}</ul>")
    @@ -252,21 +230,27 @@ 

    Examples

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/epoxy_transform_inline.html b/dev/reference/epoxy_transform_inline.html index 6cef5389..7f3f9434 100644 --- a/dev/reference/epoxy_transform_inline.html +++ b/dev/reference/epoxy_transform_inline.html @@ -1,51 +1,5 @@ -Epoxy Inline Transformer — epoxy_transform_inline • epoxyEpoxy Inline Transformer — epoxy_transform_inline • epoxy - Skip to contents - - -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    This epoxy transformer is heavily inspired by the inline formatters in the cli package. The syntax is quite similar, but epoxy's syntax is slightly different to accommodate @@ -176,8 +139,8 @@ #> It cost $123,456.

    The formatters, e.g. .dollar in the example above, can be customized using the arguments of epoxy_transform_inline(). Pass a customized -scales::label_dollar() to .dollar to achieve a different transformation.

    -

    dollars_nzd <- scales::label_dollar(suffix = " NZD")
    +scales::label_dollar() to .dollar to achieve a different transformation.

    +

    dollars_nzd <- scales::label_dollar(suffix = " NZD")
     
     epoxy(
       "It cost {.dollar 123456}.",
    @@ -209,8 +172,7 @@
     #> Here are three random percentages: 23%, 35%, and 99%.

    -
    -

    Usage

    +
    epoxy_transform_inline(
       ...,
       transformer = glue::identity_transformer,
    @@ -222,7 +184,7 @@ 

    Usage .date = function(x) format(x, format = "%F"), .time = function(x) format(x, format = "%T"), .datetime = function(x) format(x, format = "%F %T"), - .dollar = scales::label_dollar(prefix = engine_pick("$", "$", "\\$")), + .dollar = scales::label_dollar(prefix = engine_pick("$", "$", "\\$")), .number = scales::label_number(), .comma = scales::label_comma(), .ordinal = scales::label_ordinal(), @@ -241,8 +203,8 @@

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    ...

    Additional named inline transformers as functions taking at least one argument. The evaluated expression from the template expression is @@ -292,7 +254,7 @@

    Argumentsscales::label_dollar(prefix = engine_pick("$", "$", "\\$")).

    +

    The function to apply to x when the template is {.dollar x}. Default is scales::label_dollar(prefix = engine_pick("$", "$", "\\$")).

    .number
    @@ -355,23 +317,23 @@

    Arguments -

    Value

    +
    +

    Value

    A function of text and envir suitable for the .transformer argument of glue::glue().

    -
    -

    See also

    +
    -
    -

    Examples

    +
    +

    Examples

    revenue <- 0.2123
     sales <- 42000.134
     
    @@ -395,7 +357,7 @@ 

    Examples '{.pct revenue} of revenue generates {.dollar sales} in profits.', .transformer = epoxy_transform_inline( .percent = scales::label_percent(accuracy = 0.1), - .dollar = scales::label_dollar(accuracy = 10) + .dollar = scales::label_dollar(accuracy = 10) ) ) #> 21.2% of revenue generates $42,000 in profits. @@ -404,7 +366,7 @@

    Examples '{.pct revenue} of revenue generates {.dollar sales} in profits.', .transformer = epoxy_transform_inline( .percent = scales::label_percent(accuracy = 0.1), - .dollar = scales::label_dollar(accuracy = 10) + .dollar = scales::label_dollar(accuracy = 10) ) ) #> 21.2% of revenue generates $42,000 in profits. @@ -422,21 +384,27 @@

    Examples#> https://example.com?q=why%20are%20cats%20scared%20of%20cucumbers>

    -
    +

    + +
    -
    + + + - + diff --git a/dev/reference/epoxy_transform_one_shot.html b/dev/reference/epoxy_transform_one_shot.html index fcf82564..f5e1beab 100644 --- a/dev/reference/epoxy_transform_one_shot.html +++ b/dev/reference/epoxy_transform_one_shot.html @@ -1,86 +1,93 @@ -One-shot epoxy transformers — epoxy_transform_one_shot • epoxyOne-shot epoxy transformers — epoxy_transform_one_shot • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    These transformers are useful for applying the same transformation to every replacement in the template.

    -
    -

    Usage

    +
    epoxy_transform_wrap(
       before = "**",
       after = before,
    @@ -110,8 +117,8 @@ 

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    before, after

    In epoxy_transform_wrap(), the characters to be added before and after variables in the template string.

    @@ -169,15 +176,15 @@

    Argumentsand::and_languages for supported languages.

    -
    -

    Value

    +
    +

    Value

    A function of text and envir suitable for the .transformer argument of glue::glue().

    -
    -

    Functions

    +
    +

    Functions

    • epoxy_transform_wrap(): Wrap variables with text added before or after the inline expression.

    • @@ -194,8 +201,8 @@

      Functions -

      Examples

      +
      +

      Examples

      abc <- c("a", "b", "c")
       
       epoxy("{abc}", .transformer = epoxy_transform_wrap("'"))
      @@ -224,21 +231,27 @@ 

      Examples#> C

      -

    +
    + +
    -
    + + + - + diff --git a/dev/reference/epoxy_use.html b/dev/reference/epoxy_use.html index d4ba1ff8..4e66e655 100644 --- a/dev/reference/epoxy_use.html +++ b/dev/reference/epoxy_use.html @@ -1,13 +1,5 @@ -Reuse a Template Chunk — epoxy_use • epoxyReuse a Template Chunk — epoxy_use • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    Reuse a template from another chunk or file. By calling epoxy_use_chunk() in an R chunk or inline R expression, you can reuse a template defined in another chunk in your document.

    @@ -100,15 +101,14 @@ option in the YAML front matter; the default is epoxy().

    -
    -

    Usage

    +
    epoxy_use_chunk(.data = NULL, label, ...)
     
     epoxy_use_file(.data = NULL, file, ...)
    -
    -

    Arguments

    +
    +

    Arguments

    .data

    A data set

    @@ -195,8 +195,8 @@

    Argumentsepoxy().

    -
    -

    Value

    +
    +

    Value

    A character string of the rendered template based on the label

    @@ -205,44 +205,44 @@

    Value

    chunk. The results are marked as "asis" output so that they are treated as regular text rather than being displayed as code results.

    -
    -

    Use in R Markdown or Quarto

    +
    +

    Use in R Markdown or Quarto

    -

    ```{epoxy movie-release}
    -{.emph title} was released in {year}.
    -```
    -
    -```{r}
    -# Re-using the template we defined above
    -epoxy_use_chunk(bechdel[1, ], "movie-release")
    -```
    -
    -```{r}
    -# Using in a dplyr pipeline
    -bechdel |>
    -  dplyr::filter(year == 1989) |>
    -  epoxy_use_chunk("movie-release")
    -```

    +

    ```{epoxy movie-release}
    +{.emph title} was released in {year}.
    +```
    +
    +```{r}
    +# Re-using the template we defined above
    +epoxy_use_chunk(bechdel[1, ], "movie-release")
    +```
    +
    +```{r}
    +# Using in a dplyr pipeline
    +bechdel |>
    +  dplyr::filter(year == 1989) |>
    +  epoxy_use_chunk("movie-release")
    +```

    Or you can even use it inline:

    -

    It's hard to believe that
    -`r epoxy_use_chunk(bechdel[2, ], "movie-release")`.

    +

    It's hard to believe that
    +`r epoxy_use_chunk(bechdel[2, ], "movie-release")`.

    It's hard to believe that Back to the Future Part II was released in 1989.

    The same template could also be stored in a file, e.g. movie-release.md:

    -

    ---
    -engine: epoxy
    ----
    -
    -{.emph title} was released in {year}.

    +

    ---
    +engine: epoxy
    +---
    +
    +{.emph title} was released in {year}.

    The YAML front matter is used in template files to set options for the template. You can use the engine option to choose the epoxy function to be applied to the template, e.g. engine: epoxy_html or engine: epoxy_latex. By default, engine: epoxy is assumed unless otherwise specified.

    -
    -

    Template Options

    +
    +

    Template Options

    @@ -262,21 +262,27 @@

    Template Optionsknitr::opts_chunk$set(), see ?knitr::opts_chunk for more information.

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/index.html b/dev/reference/index.html index e5c4445a..19b69f2e 100644 --- a/dev/reference/index.html +++ b/dev/reference/index.html @@ -1,232 +1,190 @@ -Function reference • epoxyFunction reference • epoxy - Skip to contents + -
    -
    -
    - -
    -

    epoxy, super-glue wrappers

    - - - - -
    - - - - -
    - - epoxy() epoxy_html() epoxy_latex() -
    -
    Epoxy string interpolation
    -
    - - use_epoxy_knitr_engines() use_epoxy_glue_engine() -
    -
    Use the epoxy knitr engines
    -
    -

    epoxy Transformers

    - - - - -
    - - - - -
    - - epoxy_transform() epoxy_transform_get() epoxy_transform_set() -
    -
    epoxy Transformers
    -
    - - epoxy_transform_inline() -
    -
    Epoxy Inline Transformer
    -
    - - epoxy_transform_html() -
    -
    Concise syntax for expressions inside HTML elements
    -
    - - epoxy_transform_wrap() epoxy_transform_bold() epoxy_transform_italic() epoxy_transform_apply() epoxy_transform_code() epoxy_transform_collapse() -
    -
    One-shot epoxy transformers
    -
    - - engine_pick() -
    -
    Pick an engine-specific value
    -
    -

    Reuse epoxy Templates

    - - - - -
    - - - - -
    - - epoxy_use_chunk() epoxy_use_file() -
    -
    Reuse a Template Chunk
    -
    -

    Templating for Shiny

    - - - - -
    - - - - -
    - - ui_epoxy_html() epoxyHTML() -
    -
    Epoxy HTML Output for Shiny
    -
    - - ui_epoxy_markdown() -
    -
    Epoxy Markdown Template for Shiny
    -
    - - render_epoxy() renderEpoxyHTML() -
    -
    Render Epoxy Output
    -
    - - run_epoxy_example_app() -
    -
    Example epoxy Shiny apps
    -
    -

    Mustache-style Templating

    - -

    Sometimes you need just a little bit more templating power than epoxy() or glue can provide. The mustache templating language is a simple, popular, logic-less templating language. Consider using mustache when your template uses nested data structures or conditionally included content, but doesn’t require any inline formatting.

    - - -
    - - - +
    +
    +
    -
    - - epoxy_mustache() -
    -
    Mustache-style string interpolation
    -
    - - ui_epoxy_mustache() ui_epoxy_whisker() -
    -
    Epoxy HTML Mustache Template
    -
    -

    Example Datasets

    -

    Interesting datasets that can help you explore, learn, and practice using epoxy.

    - -
    - - - +
    +
    + -
    - - bechdel -
    -
    Top 10 Highest-Rated, Bechdel-Passing Movies
    -
    -
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    epoxy, super-glue wrappers

    +

    +
    +

    epoxy() epoxy_html() epoxy_latex()

    +

    Epoxy string interpolation

    +

    use_epoxy_knitr_engines() use_epoxy_glue_engine()

    +

    Use the epoxy knitr engines

    +

    epoxy Transformers

    +

    +
    +

    epoxy_transform() epoxy_transform_get() epoxy_transform_set()

    +

    epoxy Transformers

    +

    epoxy_transform_inline()

    +

    Epoxy Inline Transformer

    +

    epoxy_transform_html()

    +

    Concise syntax for expressions inside HTML elements

    +

    epoxy_transform_wrap() epoxy_transform_bold() epoxy_transform_italic() epoxy_transform_apply() epoxy_transform_code() epoxy_transform_collapse()

    +

    One-shot epoxy transformers

    +

    engine_pick()

    +

    Pick an engine-specific value

    +

    Reuse epoxy Templates

    +

    +
    +

    epoxy_use_chunk() epoxy_use_file()

    +

    Reuse a Template Chunk

    +

    Templating for Shiny

    +

    +
    +

    ui_epoxy_html() epoxyHTML()

    +

    Epoxy HTML Output for Shiny

    +

    ui_epoxy_markdown()

    +

    Epoxy Markdown Template for Shiny

    +

    render_epoxy() renderEpoxyHTML()

    +

    Render Epoxy Output

    +

    run_epoxy_example_app()

    +

    Example epoxy Shiny apps

    +

    Mustache-style Templating

    +

    Sometimes you need just a little bit more templating power than epoxy() or glue can provide. The mustache templating language is a simple, popular, logic-less templating language. Consider using mustache when your template uses nested data structures or conditionally included content, but doesn’t require any inline formatting.

    +
    +

    epoxy_mustache()

    +

    Mustache-style string interpolation

    +

    ui_epoxy_mustache() ui_epoxy_whisker()

    +

    Epoxy HTML Mustache Template

    +

    Example Datasets

    +

    Interesting datasets that can help you explore, learn, and practice using epoxy.

    +
    +

    bechdel

    +

    Top 10 Highest-Rated, Bechdel-Passing Movies

    + + +
    -
    + + + - + diff --git a/dev/reference/render_epoxy.html b/dev/reference/render_epoxy.html index 36b26c09..3051315c 100644 --- a/dev/reference/render_epoxy.html +++ b/dev/reference/render_epoxy.html @@ -1,92 +1,97 @@ -Render Epoxy Output — render_epoxy • epoxyRender Epoxy Output — render_epoxy • epoxy - Skip to contents - - -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    Server-side render function used to provide values for template items. Use named values matching the template variable names in the associated ui_epoxy_html() or ui_epoxy_mustache(). When the values are updated by the app, render_epoxy() will update the values shown in the app's UI.

    -
    -

    Usage

    +
    render_epoxy(
       ...,
       .list = NULL,
    @@ -98,8 +103,8 @@ 

    Usage renderEpoxyHTML(..., env = parent.frame())

    -
    -

    Arguments

    +
    +

    Arguments

    ...

    Named values corresponding to the template variables created with the associated ui_epoxy_html() UI element.

    @@ -129,28 +134,29 @@

    Arguments -

    Value

    +
    +

    Value

    A server-side Shiny render function that should be assigned to Shiny's output object and named to match the .id of the corresponding ui_epoxy_html() call.

    -
    -

    Functions

    +
    +

    Functions

    • renderEpoxyHTML(): [Deprecated] Deprecated alias, please use render_epoxy().

    -
    -

    See also

    + -
    -

    Examples

    -
    # This small app shows the current time using `ui_epoxy_html()`
    +    
    +

    Examples

    +
    if (FALSE) { # rlang::is_installed("shiny") && rlang::is_interactive()
    +# This small app shows the current time using `ui_epoxy_html()`
     # to provide the HTML template and `render_epoxy()` to
     # update the current time every second.
     
    @@ -174,26 +180,33 @@ 

    Examplesif (rlang::is_interactive()) { shiny::shinyApp(ui, server) } +} if (FALSE) { # rlang::is_interactive() run_epoxy_example_app("render_epoxy") }

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/run_epoxy_example_app.html b/dev/reference/run_epoxy_example_app.html index 170ebaa6..29a2e260 100644 --- a/dev/reference/run_epoxy_example_app.html +++ b/dev/reference/run_epoxy_example_app.html @@ -1,86 +1,93 @@ -Example epoxy Shiny apps — run_epoxy_example_app • epoxyExample epoxy Shiny apps — run_epoxy_example_app • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    Run an example epoxy Shiny app showcasing the Shiny UI and server components provided by epoxy.

    -
    -

    Usage

    +
    run_epoxy_example_app(
       name = c("ui_epoxy_html", "ui_epoxy_markdown", "ui_epoxy_mustache", "render_epoxy"),
       display.mode = "showcase",
    @@ -88,8 +95,8 @@ 

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    name

    Name of the example, currently one of "ui_epoxy_html", "ui_epoxy_markdown", "ui_epoxy_mustache", or "render_epoxy".

    @@ -151,19 +158,19 @@

    Arguments -

    Value

    +
    +

    Value

    Runs the Shiny example app interactively. Nothing is returned.

    -
    -

    See also

    + -
    -

    Examples

    +
    +

    Examples

    # List examples by passing `name = NULL`
     run_epoxy_example_app(name = NULL)
     #> Example app options:
    @@ -175,21 +182,27 @@ 

    Examples

    -
    +
    + +

    -
    + + + - + diff --git a/dev/reference/ui_epoxy_html.html b/dev/reference/ui_epoxy_html.html index b3f09605..e0d6a33b 100644 --- a/dev/reference/ui_epoxy_html.html +++ b/dev/reference/ui_epoxy_html.html @@ -1,86 +1,91 @@ -Epoxy HTML Output for Shiny — ui_epoxy_html • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    A glue-like output for Shiny. ui_epoxy_html() lets you use placeholders in your HTML such as "{{first_name}}", that are provided values from the server by giving render_epoxy() a first_name value. Unlike @@ -88,8 +93,7 @@ the server-side data have changed are updated in ui_epoxy_html().

    -
    -

    Usage

    +
    ui_epoxy_html(
       .id,
       ...,
    @@ -115,8 +119,8 @@ 

    Usage epoxyHTML(.id, ...)

    -
    -

    Arguments

    +
    +

    Arguments

    .id

    The output id

    @@ -218,28 +222,28 @@

    Argumentsepoxy v1.0.0, please use .item_tag instead.

    -
    -

    Value

    +
    +

    Value

    An HTML object.

    -
    -

    Functions

    +
    +

    Functions

    • epoxyHTML(): [Deprecated] Deprecated alias, please use ui_epoxy_html().

    -
    -

    HTML Markup

    +
    +

    HTML Markup

    By default, placeholders are inserted into a <span> element in your UI, with the classes specified in .class_item.

    ui_epoxy_html() also supports an HTML markup syntax similar to pug (an HTML preprocessor). As an example, the markup syntax

    -

    "{{h3.example.basic#basic-three demo}}"

    +

    "{{h3.example.basic#basic-three demo}}"

    creates a demo placeholder inside the following tag.

    -

    <h3 id="basic-three" class="example basic"></h3>

    +

    <h3 id="basic-three" class="example basic"></h3>

    The placeholder template string follows the pattern {{<markup> <name>}}. The markup syntax comes first, separated from the placeholder name by a space. The HTML element is first, followed by classes prefixed with . or @@ -252,14 +256,15 @@

    HTML Markup -

    See also

    + -
    -

    Examples

    -
    library(shiny)
    +    
    +

    Examples

    +
    if (FALSE) { # rlang::is_installed("shiny") && rlang::is_interactive()
    +library(shiny)
     
     ui <- fluidPage(
       h2("ui_epoxy_html demo"),
    @@ -320,26 +325,33 @@ 

    Examplesif (interactive()) { shinyApp(ui, server) } +} if (FALSE) { # rlang::is_interactive() run_epoxy_example_app("ui_epoxy_html") }

    -
    +
    + +

    -
    + + + - + diff --git a/dev/reference/ui_epoxy_markdown.html b/dev/reference/ui_epoxy_markdown.html index 3d69c22c..90e266c3 100644 --- a/dev/reference/ui_epoxy_markdown.html +++ b/dev/reference/ui_epoxy_markdown.html @@ -1,86 +1,91 @@ -Epoxy Markdown Template for Shiny — ui_epoxy_markdown • epoxyEpoxy Markdown Template for Shiny — ui_epoxy_markdown • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    Create reactive HTML from a Markdown template. ui_epoxy_markdown() uses the same template syntax as ui_epoxy_html(), but rather than requiring HTML inputs, you can write in markdown. The template is first rendered from @@ -88,8 +93,7 @@ available) or commonmark::markdown_html() otherwise.

    -
    -

    Usage

    +
    ui_epoxy_markdown(
       .id,
       ...,
    @@ -115,8 +119,8 @@ 

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    .id

    The output id

    @@ -231,19 +235,19 @@

    Argumentsepoxy v1.0.0, please use .item_tag instead.

    -
    -

    Value

    +
    +

    Value

    An HTML object.

    -
    -

    See also

    + -
    -

    Examples

    +
    +

    Examples

    if (FALSE) { # rlang::is_installed("shiny") && rlang::is_interactive()
     library(shiny)
     
    @@ -251,7 +255,7 @@ 

    Examples# so we still have to do some prep work ourselves. bechdel <- epoxy::bechdel -as_dollars <- scales::label_dollar( +as_dollars <- scales::label_dollar( scale_cut = scales::cut_short_scale() ) bechdel$budget <- as_dollars(bechdel$budget) @@ -323,21 +327,27 @@

    Examples}

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/ui_epoxy_mustache.html b/dev/reference/ui_epoxy_mustache.html index 00a76f10..8584322f 100644 --- a/dev/reference/ui_epoxy_mustache.html +++ b/dev/reference/ui_epoxy_mustache.html @@ -1,13 +1,5 @@ -Epoxy HTML Mustache Template — ui_epoxy_mustache • epoxyEpoxy HTML Mustache Template — ui_epoxy_mustache • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    A Shiny output that uses mustache templating to render HTML. Mustache is a powerful template language with minimal internal logic. The advantage of ui_epoxy_mustache() is that all parts of @@ -100,8 +101,7 @@ of the data that have changed.

    -
    -

    Usage

    +
    ui_epoxy_mustache(
       id,
       ...,
    @@ -119,8 +119,8 @@ 

    Usage )

    -
    -

    Arguments

    +
    +

    Arguments

    id

    The ID of the output.

    @@ -144,29 +144,30 @@

    Argumentshtmltools::tag().

    -
    -

    Value

    +
    +

    Value

    Returns a Shiny output UI element.

    -
    -

    Functions

    +
    +

    Functions

    • ui_epoxy_whisker(): An alias for ui_epoxy_mustache(), provided because R users are more familiar with this syntax via the whisker package.

    -
    -

    See also

    +
    +

    See also

    ui_epoxy_html(), render_epoxy()

    Other Mustache-style template functions: epoxy_mustache()

    -
    -

    Examples

    -
    library(shiny)
    +    
    +

    Examples

    +
    if (FALSE) { # rlang::is_installed("shiny") && rlang::is_interactive()
    +library(shiny)
     
     ui <- fluidPage(
       fluidRow(
    @@ -220,26 +221,33 @@ 

    Examplesif (interactive()) { shiny::shinyApp(ui, server) } +} if (FALSE) { # rlang::is_interactive() run_epoxy_example_app("ui_epoxy_mustache") }

    -
    +
    + +
    -
    + + + - + diff --git a/dev/reference/use_epoxy_knitr_engines.html b/dev/reference/use_epoxy_knitr_engines.html index 231367ef..6850b9d9 100644 --- a/dev/reference/use_epoxy_knitr_engines.html +++ b/dev/reference/use_epoxy_knitr_engines.html @@ -1,23 +1,5 @@ -Use the epoxy knitr engines — use_epoxy_knitr_engines • epoxyUse the epoxy knitr engines — use_epoxy_knitr_engines • epoxy - Skip to contents + -
    -
    -
    +
    +
    + + + +
    +
    + -
    +

    Sets epoxy's knitr engines for use by knitr in R Markdown and other document formats powered by knitr. These engines are also set up when loading epoxy with library(), so in general you will not @@ -127,8 +118,7 @@ glue package.

    -
    -

    Usage

    +
    use_epoxy_knitr_engines(
       use_glue_engine = "glue" %in% include,
       include = c("md", "html", "latex", "mustache")
    @@ -137,8 +127,8 @@ 

    Usage use_epoxy_glue_engine()

    -
    -

    Arguments

    +
    +

    Arguments

    use_glue_engine

    If TRUE (default FALSE), uses epoxy's glue engine, most likely overwriting the glue engine provided by glue.

    @@ -150,47 +140,53 @@

    Arguments -

    Value

    +
    +

    Value

    Silently sets epoxy's knitr engines and invisible returns knitr::knit_engines as they were prior to the function call.

    -
    -

    Functions

    +
    +

    Functions

    • use_epoxy_glue_engine(): Use epoxy's epoxy engine as the glue engine.

    -
    -

    See also

    +
    +

    See also

    epoxy(), epoxy_html(), epoxy_latex(), and epoxy_mustache() for the functions that power these knitr engines.

    -
    -

    Examples

    -
    if (FALSE) { # interactive()
    +    
    +

    Examples

    +
    if (FALSE) { # rlang::is_interactive()
     use_epoxy_knitr_engines()
     }
     
    -
    +
    + +
    -
    + + + - + diff --git a/dev/sitemap.xml b/dev/sitemap.xml index 0db58411..8c7dbf25 100644 --- a/dev/sitemap.xml +++ b/dev/sitemap.xml @@ -1,93 +1,93 @@ - http://pkg.garrickadenbuie.com/epoxy/dev/CODE_OF_CONDUCT.html + http://pkg.garrickadenbuie.com/epoxy/CODE_OF_CONDUCT.html - http://pkg.garrickadenbuie.com/epoxy/dev/LICENSE-text.html + http://pkg.garrickadenbuie.com/epoxy/LICENSE-text.html - http://pkg.garrickadenbuie.com/epoxy/dev/LICENSE.html + http://pkg.garrickadenbuie.com/epoxy/LICENSE.html - http://pkg.garrickadenbuie.com/epoxy/dev/articles/epoxy-report.html + http://pkg.garrickadenbuie.com/epoxy/articles/epoxy-report.html - http://pkg.garrickadenbuie.com/epoxy/dev/articles/epoxy-script.html + http://pkg.garrickadenbuie.com/epoxy/articles/epoxy-script.html - http://pkg.garrickadenbuie.com/epoxy/dev/articles/epoxy-shiny.html + http://pkg.garrickadenbuie.com/epoxy/articles/epoxy-shiny.html - http://pkg.garrickadenbuie.com/epoxy/dev/articles/epoxy.html + http://pkg.garrickadenbuie.com/epoxy/articles/epoxy.html - http://pkg.garrickadenbuie.com/epoxy/dev/articles/index.html + http://pkg.garrickadenbuie.com/epoxy/articles/index.html - http://pkg.garrickadenbuie.com/epoxy/dev/articles/inline-reporting.html + http://pkg.garrickadenbuie.com/epoxy/articles/inline-reporting.html - http://pkg.garrickadenbuie.com/epoxy/dev/authors.html + http://pkg.garrickadenbuie.com/epoxy/authors.html - http://pkg.garrickadenbuie.com/epoxy/dev/index.html + http://pkg.garrickadenbuie.com/epoxy/index.html - http://pkg.garrickadenbuie.com/epoxy/dev/news/index.html + http://pkg.garrickadenbuie.com/epoxy/news/index.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/bechdel.html + http://pkg.garrickadenbuie.com/epoxy/reference/bechdel.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/engine_pick.html + http://pkg.garrickadenbuie.com/epoxy/reference/engine_pick.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy-package.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy-package.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy_mustache.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy_mustache.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy_style.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy_style.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy_transform.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy_transform.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy_transform_html.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy_transform_html.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy_transform_inline.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy_transform_inline.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy_transform_one_shot.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy_transform_one_shot.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/epoxy_use.html + http://pkg.garrickadenbuie.com/epoxy/reference/epoxy_use.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/index.html + http://pkg.garrickadenbuie.com/epoxy/reference/index.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/render_epoxy.html + http://pkg.garrickadenbuie.com/epoxy/reference/render_epoxy.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/run_epoxy_example_app.html + http://pkg.garrickadenbuie.com/epoxy/reference/run_epoxy_example_app.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/ui_epoxy_html.html + http://pkg.garrickadenbuie.com/epoxy/reference/ui_epoxy_html.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/ui_epoxy_markdown.html + http://pkg.garrickadenbuie.com/epoxy/reference/ui_epoxy_markdown.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/ui_epoxy_mustache.html + http://pkg.garrickadenbuie.com/epoxy/reference/ui_epoxy_mustache.html - http://pkg.garrickadenbuie.com/epoxy/dev/reference/use_epoxy_knitr_engines.html + http://pkg.garrickadenbuie.com/epoxy/reference/use_epoxy_knitr_engines.html