Переглянути джерело

Move theme generation helpers into package and add tests

tags/v0.3.0
Garrick Aden-Buie 7 роки тому
джерело
коміт
0c7dd01291
3 змінених файлів з 39 додано та 17 видалено
  1. +24
    -0
      R/theme_settings.R
  2. +1
    -17
      inst/scripts/generate_theme_functions.R
  3. +14
    -0
      tests/testthat/test-helpers.R

+ 24
- 0
R/theme_settings.R Переглянути файл

@@ -324,3 +324,27 @@ template_solarized_dark <- set_default(
table_row_border_color = solarized$base00,
table_row_even_background_color = solarized$base02
)


# Theme Generating Helpers ----------------------------------------------


plural_element <- function(css_name) {
is_mult <- grepl(",|and|or", css_name)
is_class <- grepl("^\\.", css_name)
ifelse(is_class,
ifelse(is_mult, "classes", "class"),
ifelse(is_mult, "elements", "element")
)
}

element_description <- function(element) {
out <- rep("", length(element))
multiple <- grepl("multiple", element)
out[multiple] <- "Modifies multiple CSS classes or elements."

ifelse(
multiple | is.na(element) | element == "",
out,
glue::glue("Modifies the `{element}` {plural_element(element)}.")
)

+ 1
- 17
inst/scripts/generate_theme_functions.R Переглянути файл

@@ -1,21 +1,5 @@
source(here::here("R/theme_settings.R"))

plural_element <- function(css_name) {
is_mult <- grepl(",|and|or", css_name)
is_class <- grepl("^\\.", css_name)
ifelse(is_class,
ifelse(is_mult, "classes", "class"),
ifelse(is_mult, "elements", "element")
)
}

element_description <- function(element) {
ifelse(
grepl("multiple", element),
"Modifies multiple CSS classes or elements.",
glue::glue("Modifies the `{element}` {plural_element(element)}.")
)
}
# R/theme_settings.R contains element_description() and plural_elements()

setup_theme_function <- function(
f_name = "write_xaringan_theme",

+ 14
- 0
tests/testthat/test-helpers.R Переглянути файл

@@ -0,0 +1,14 @@
context("test-helpers")

test_that("element_description", {
text_in <- c("multiple", NA, "", ".remark-slide-content", "h1", "pre, code")
text_out <- c(
"Modifies multiple CSS classes or elements.",
"",
"",
"Modifies the `.remark-slide-content` class.",
"Modifies the `h1` element.",
"Modifies the `pre, code` elements."
)
expect_equal(element_description(text_in), text_out)
})

Завантаження…
Відмінити
Зберегти