Nothing
source(here::here("R/utils_theme-gen.R"))
load(here::here("R/sysdata.rda"))
# R/theme_settings.R contains element_description() and plural_elements()
setup_theme_function <- function(
f_name = "style_xaringan",
template = template_variables,
...,
file = "",
body = " eval(parse(text = call_style_xaringan()))",
theme_colors = NULL
) {
if (file == "clip" && !requireNamespace("clipr", quietly = TRUE)) file <- ""
f_body_theme_colors <- include_theme_colors(theme_colors)
f_body <- c(
" # DO NOT EDIT - Generated from inst/scripts/generate_theme_functions.R",
f_body_theme_colors,
body
)
tv <- template
f_def <- c(
"# Generated by inst/scripts/generate_theme_functions.R: do not edit by hand\n",
as.character(
glue::glue_data(
tv,
"#' @param {variable} {description}. ",
"Defaults to {gsub('[{{}}]', '`', default)}. ",
"{element_description(element)}",
"{describe_css_property(css_property)}",
"{describe_css_variable(css_variable)}"
)
),
"#' @template theme_params",
"#' @template style-usage",
...,
glue::glue("{f_name} <- function("),
as.character(
glue::glue_data(
tv,
" {variable} = {ifelse(!grepl('^[{].+[}]$', default), paste0('\"', default, '\"'), gsub('[{}]', '', default))},"
)
),
" colors = NULL,",
" extra_css = NULL,",
" extra_fonts = NULL,",
" outfile = \"xaringan-themer.css\"",
") {"
)
if (!is.null(f_body)) f_def <- c(f_def, f_body, "}")
if (file == "clip") {
clipr::write_clip(f_def)
message("Wrote ", f_name, " function signature to clipboard.")
} else {
cat(reflow_roxygen(f_def), sep = "\n", file = file)
message("Wrote ", f_name, " to ", file)
}
invisible()
}
reflow_roxygen <- function(x) {
is_roxy_tag <- grepl("^#' @", x)
roxy_tags <- x[is_roxy_tag]
roxy_tags <- sub("^#' ", "", roxy_tags)
roxy_tags <- purrr::map_chr(
roxy_tags,
~ paste(
"#'", strwrap(
pack_inline_code(.x),
width = 77,
exdent = 2
), collapse = "\n")
)
roxy_tags <- gsub("\u00A0", " ", roxy_tags)
x[is_roxy_tag] <- roxy_tags
x
}
pack_inline_code <- function(x) {
stopifnot(length(x) == 1, is.character(x))
x <- strsplit(x, "")[[1]]
inline_code <- FALSE
for (i in seq_along(x)) {
if (identical(x[i], "`")) {
inline_code <- !inline_code
} else if (inline_code && identical(x[i], " ")) {
x[i] <- "\u00A0"
}
}
paste(x, collapse = "")
}
include_theme_colors <- function(theme_colors = NULL) {
if (is.null(theme_colors)) return(NULL)
unname <- glue::glue("{theme_colors} <- unname({theme_colors})")
unname <- paste(unname, collapse = "\n ")
x <- glue::glue('{names(theme_colors)} = {theme_colors}')
x <- paste(x, collapse = ", ")
glue::glue(" {unname}\n colors <- c({x}, colors)", .trim = FALSE)
}
# ---- Write Xaringan Theme Function ----
setup_theme_function(
"style_xaringan",
template_variables,
"#' @template style_xaringan",
"#' @export",
body = paste0(" ", readLines(here::here("inst/scripts/style_xaringan_body.R"))),
file = here::here("R/style_xaringan.R")
)
# ---- Monotone Light ----
setup_theme_function(
"style_mono_light",
template_mono_light,
"#' @template style_mono_light",
"#' @family Monotone themes",
"#' @export",
file = here::here("R/style_mono_light.R"),
theme_colors = c(base = "base_color", white = "white_color", black = "black_color")
)
# ---- Monotone Dark ----
setup_theme_function(
"style_mono_dark",
template_mono_dark,
"#' @template style_mono_dark",
"#' @family Monotone themes",
"#' @export",
file = here::here("R/style_mono_dark.R"),
theme_colors = c(base = "base_color", white = "white_color", black = "black_color")
)
# ---- Monotone Accent ----
setup_theme_function(
"style_mono_accent",
template_mono_accent,
"#' @template style_mono_accent",
"#' @family Monotone themes",
"#' @export",
file = here::here("R/style_mono_accent.R"),
theme_colors = c(base = "base_color", white = "white_color", black = "black_color")
)
# ---- Monotone Accent Inverse ----
setup_theme_function(
"style_mono_accent_inverse",
template_mono_accent_inverse,
"#' @template style_mono_accent_inverse",
"#' @family Monotone themes",
"#' @export",
file = here::here("R/style_mono_accent_inverse.R"),
theme_colors = c(base = "base_color", white = "white_color", black = "black_color")
)
# ---- Duotone ----
setup_theme_function(
"style_duo",
template_duo,
"#' @template style_duo",
"#' @family Duotone themes",
"#' @export",
file = here::here("R/style_duo.R"),
theme_colors = c(primary = "primary_color", secondary = "secondary_color")
)
# ---- Duotone Accent ----
setup_theme_function(
"style_duo_accent",
template_duo_accent,
"#' @template style_duo_accent",
"#' @family Duotone themes",
"#' @export",
file = here::here("R/style_duo_accent.R"),
theme_colors = c(primary = "primary_color", secondary = "secondary_color",
white = "white_color", black = "black_color")
)
# ---- Duotone Accent Inverse ----
setup_theme_function(
"style_duo_accent_inverse",
template_duo_accent_inverse,
"#' @template style_duo_accent_inverse",
"#' @family Duotone themes",
"#' @export",
file = here::here("R/style_duo_accent_inverse.R"),
theme_colors = c(primary = "primary_color", secondary = "secondary_color",
white = "white_color", black = "black_color")
)
# ---- Solarized Light ----
setup_theme_function(
"style_solarized_light",
template_solarized_light,
"#' @template style_solarized_light",
"#' @family Solarized themes",
"#' @export",
file = here::here("R/style_solarized_light.R")
)
# ---- Solarized Dark ----
setup_theme_function(
"style_solarized_dark",
template_solarized_dark,
"#' @template style_solarized_dark",
"#' @family Solarized themes",
"#' @export",
file = here::here("R/style_solarized_dark.R")
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.