This function generates a new "Examples in Shinylive" section in the documentation. This section contains URL to
the application in Shinylive as well as an iframe with the application.
If no code is provided then the code is taken from the following @examples
or @examplesIf
tag.
Details
The application code must be executable inside Shinylive. If the application code includes functions from your
package, you must add library(<package>)
beforehand. For more information, refer to the Decoration section
on how to use and decorate existing examples.
Note: All the packages used in the application code need to be installable in WebR. See this article for more details.
Decoration
To avoid repetition between the @examplesShinylive
and @examples
sections contents,
there are special string literals to be used inside @examplesShinylive
tag content
that allow you to access the content(s) of the @examples
or @examplesIf
tags.
These literals should be used as expressions embraced with {{ }}
, which are then interpolated using
glue::glue_data(..., .open = "{{", .close = "}}")
.
The following keywords are available:
"{{ next_example }}"
- (the default if empty) "raw" element of the next example"{{ prev_example }}"
- "raw" element of the previous example"{{ tags_examples }}"
- a list of@examples
or@examplesIf
tags"{{ examples }}"
- a list of "raw" elements fromtags_examples
list elements
This allows you to access and decorate existing example code to create executable application code for Shinylive. Refer to the examples section for possible use cases.
Examples
# As a part of documentation:
# basic example:
#' (docs)
#' @examplesShinylive
#' @examples
#' (example code)
# using keywords - `{{ next_example }}`:
#' (docs)
#' @examplesShinylive
#' foo <- 1
#' {{ next_example }}
#' bar <- 2
#' @examples
#' (example code)
# using keywords - `{{ prev_example }}`:
#' (docs)
#' bar <- 2
#' @examples
#' (example code)
#' @examplesShinylive
#' foo <- 1
#' {{ prev_example }}
# A typical example would be:
#' (docs)
#' @examplesShinylive
#' library(<package>)
#' interactive <- function() TRUE
#' {{ next_example }}
#' @examples
#' app <- ...
#' if (interactive()) {
#' shinyApp(app$ui, app$server)
#' }
# multiple apps:
#' (docs)
#' @examplesShinylive
#' @examples
#' (example app 1)
#' @examplesShinylive
#' @examples
#' (example app 2)
# skip parts of example code:
#' (docs)
#' @examples
#' (example code - skipped)
#' @examplesShinylive
#' @examples
#' (example code - included)
# multiple apps with keywords:
#' (docs)
#' @examplesShinylive
#' x <- 1
#' {{ next_example }}
#' @examples
#' (example app 1)
#' @examplesShinylive
#' y <- 1
#' {{ next_example }}
#' @examples
#' (example app 2)
# combining multiple examples:
#' (docs)
#' @examples
#' (app pre-requisites)
#' @examples
#' (example app)
#' @examplesShinylive
#' {{ paste0(examples, collapse = ", ") }}
# identical to the above example but with a different approach:
#' (docs)
#' @examples
#' (app pre-requisites)
#' @examples
#' (example app)
#' @examplesShinylive
#' {{ paste0(lapply(tags_examples, `[[`, "raw"), collapse = ", ") }}