Sfoglia il codice sorgente

More ggplot tests, store font_is_google in pkg env

tags/v0.3.0
Garrick Aden-Buie 6 anni fa
parent
commit
802c2a557f
5 ha cambiato i file con 183 aggiunte e 13 eliminazioni
  1. +16
    -10
      R/ggplot2.R
  2. +9
    -1
      R/style_xaringan.R
  3. +9
    -1
      inst/scripts/style_xaringan_body.R
  4. +3
    -0
      man/theme_xaringan_get_value.Rd
  5. +146
    -1
      tests/testthat/test-ggplot2.R

+ 16
- 10
R/ggplot2.R Vedi File

#' - `code_font_family` #' - `code_font_family`
#' - `code_font_family_fallback` #' - `code_font_family_fallback`
#' - `code_font_google` #' - `code_font_google`
#' - `code_font_is_google`
#' - `code_font_size` #' - `code_font_size`
#' - `code_font_url` #' - `code_font_url`
#' - `code_highlight_color` #' - `code_highlight_color`
#' - `header_color` #' - `header_color`
#' - `header_font_family` #' - `header_font_family`
#' - `header_font_google` #' - `header_font_google`
#' - `hedaer_font_is_google`
#' - `header_font_url` #' - `header_font_url`
#' - `header_font_weight` #' - `header_font_weight`
#' - `header_h1_font_size` #' - `header_h1_font_size`
#' - `text_font_family` #' - `text_font_family`
#' - `text_font_family_fallback` #' - `text_font_family_fallback`
#' - `text_font_google` #' - `text_font_google`
#' - `text_font_is_google`
#' - `text_font_size` #' - `text_font_size`
#' - `text_font_url` #' - `text_font_url`
#' - `text_font_weight` #' - `text_font_weight`
theme_xaringan_get_value <- function(setting, css_file = NULL) { theme_xaringan_get_value <- function(setting, css_file = NULL) {
requires_xaringanthemer_env(css_file = css_file) requires_xaringanthemer_env(css_file = css_file)
if (length(setting) > 1) { if (length(setting) > 1) {
xaringanthemer_env[setting]
} else {
xaringanthemer_env[[setting]]
ret <- list()
for (var in setting) {
ret[[var]] <- xaringanthemer_env[[var]]
}
return(ret)
} }

xaringanthemer_env[[setting]]
} }


web_to_point <- function(x, px_per_em = NULL, scale = 1) {
web_to_point <- function(x, px_per_em = NULL, scale = 0.75) {
if (is.null(x)) { if (is.null(x)) {
return(NULL) return(NULL)
} }
return(as.numeric(sub("pt$", "", x))) return(as.numeric(sub("pt$", "", x)))
} else if (grepl("px$", x)) { } else if (grepl("px$", x)) {
x <- as.numeric(sub("px$", "", x)) x <- as.numeric(sub("px$", "", x))
return(x * 0.75)
return(x * scale)
} else if (grepl("r?em$", x)) { } else if (grepl("r?em$", x)) {
x <- as.numeric(sub("r?em$", "", x)) x <- as.numeric(sub("r?em$", "", x))
return(x * px_per_em * 0.75)
return(x * px_per_em * scale)
} else { } else {
return() return()
} }
} }


get_base_font_size <- function() { get_base_font_size <- function() {
base_size <- xaringanthemer_env[["base_font_size"]]
if (is.null(base_size)) {
base_size <- xaringanthemer_env[["text_font_size"]]
}
base_size <- xaringanthemer_env[["base_font_size"]] %||%
xaringanthemer_env[["text_font_size"]]

if (!grepl("px", base_size)) { if (!grepl("px", base_size)) {
# assume 16px base font size # assume 16px base font size
16 16

+ 9
- 1
R/style_xaringan.R Vedi File

) )
table_row_even_background_color <- table_row_even_background_color %||% background_color table_row_even_background_color <- table_row_even_background_color %||% background_color
lapply(names(formals()), function(n) assign(n, get(n), envir = xaringanthemer_env))
# stash theme settings in package env
lapply(f_args, function(n) assign(n, get(n), envir = xaringanthemer_env))
for (font_is_google in paste0(c("text", "code", "header"), "_font_is_google")) {
assign(
font_is_google,
get(font_is_google, inherits = FALSE) == 1,
envir = xaringanthemer_env
)
}
xaringanthemer_version <- utils::packageVersion("xaringanthemer") xaringanthemer_version <- utils::packageVersion("xaringanthemer")

+ 9
- 1
inst/scripts/style_xaringan_body.R Vedi File

) )
table_row_even_background_color <- table_row_even_background_color %||% background_color table_row_even_background_color <- table_row_even_background_color %||% background_color


lapply(names(formals()), function(n) assign(n, get(n), envir = xaringanthemer_env))
# stash theme settings in package env
lapply(f_args, function(n) assign(n, get(n), envir = xaringanthemer_env))
for (font_is_google in paste0(c("text", "code", "header"), "_font_is_google")) {
assign(
font_is_google,
get(font_is_google, inherits = FALSE) == 1,
envir = xaringanthemer_env
)
}


xaringanthemer_version <- utils::packageVersion("xaringanthemer") xaringanthemer_version <- utils::packageVersion("xaringanthemer")



+ 3
- 0
man/theme_xaringan_get_value.Rd Vedi File

\item \code{code_font_family} \item \code{code_font_family}
\item \code{code_font_family_fallback} \item \code{code_font_family_fallback}
\item \code{code_font_google} \item \code{code_font_google}
\item \code{code_font_is_google}
\item \code{code_font_size} \item \code{code_font_size}
\item \code{code_font_url} \item \code{code_font_url}
\item \code{code_highlight_color} \item \code{code_highlight_color}
\item \code{header_color} \item \code{header_color}
\item \code{header_font_family} \item \code{header_font_family}
\item \code{header_font_google} \item \code{header_font_google}
\item \code{hedaer_font_is_google}
\item \code{header_font_url} \item \code{header_font_url}
\item \code{header_font_weight} \item \code{header_font_weight}
\item \code{header_h1_font_size} \item \code{header_h1_font_size}
\item \code{text_font_family} \item \code{text_font_family}
\item \code{text_font_family_fallback} \item \code{text_font_family_fallback}
\item \code{text_font_google} \item \code{text_font_google}
\item \code{text_font_is_google}
\item \code{text_font_size} \item \code{text_font_size}
\item \code{text_font_url} \item \code{text_font_url}
\item \code{text_font_weight} \item \code{text_font_weight}

+ 146
- 1
tests/testthat/test-ggplot2.R Vedi File

# test_that()
test_that("requires_xaringanthemer_env() errors if no style function called", {
expect_error(
with_clean_session(function() {
xaringanthemer::requires_xaringanthemer_env(NULL, FALSE)
})
)
})


describe("theme_xaringan()", { describe("theme_xaringan()", {


expect_equal(theme$plot.background$fill, "#220000") expect_equal(theme$plot.background$fill, "#220000")
}) })
}) })


describe("theme_xaringan_get_value()", {

it("errors if no css file or style_xaringan theme called", {
expect_error(
with_clean_session(function() {
xaringanthemer::theme_xaringan_get_value("text_font_family")
})
)
})

it("returns theme values", {
theme <- with_clean_session(function() {
xaringanthemer::style_xaringan(
base_font_size = "33px",
text_font_size = "23px",
text_color = "#000001",
inverse_text_color = "#100000",
background_color = "#000002",
inverse_background_color = "#200000",
header_color = "#000003",
inverse_header_color = "#300000",
text_bold_color = "#000004",
text_font_family = "Damogran",
text_font_google = NULL,
header_font_family = "Magrathea",
header_font_google = NULL,
outfile = NULL
)
list(
text = xaringanthemer::theme_xaringan_get_value(c("text_font_family", "text_font_is_google", "text_color", "text_bold_color")),
code_font_is_google = xaringanthemer::theme_xaringan_get_value("code_font_is_google"),
inverse_text_color = xaringanthemer::theme_xaringan_get_value("inverse_text_color"),
background_color = xaringanthemer::theme_xaringan_get_value("background_color"),
header_color = xaringanthemer::theme_xaringan_get_value("header_color"),
inverse_header_color = xaringanthemer::theme_xaringan_get_value("inverse_header_color"),
base_font_size = xaringanthemer:::get_base_font_size(),
accent_color = xaringanthemer:::get_theme_accent_color(),
accent_color_inverse = xaringanthemer:::get_theme_accent_color(inverse = TRUE)
)
})

expect_equal(theme$text$text_font_family, "Damogran")
expect_equal(theme$text$text_color, "#000001")
expect_false(theme$text$text_font_is_google)
expect_true(theme$code_font_is_google)
expect_equal(theme$text$text_bold_color, "#000004")
expect_equal(theme$inverse_text_color, "#100000")
expect_equal(theme$background_color, "#000002")
expect_equal(theme$header_color, "#000003")
expect_equal(theme$inverse_header_color, "#300000")
expect_equal(theme$base_font_size, 33)
expect_equal(theme$accent_color, "#000003")
expect_equal(theme$accent_color_inverse, "#300000")
})

it("returns theme values from the css file", {
expect_warning(
css <- xaringanthemer::style_xaringan(
base_font_size = "1em",
text_color = "#000001",
inverse_text_color = "#100000",
background_color = "#000002",
inverse_background_color = "#200000",
header_color = "#000003",
inverse_header_color = "#300000",
text_bold_color = "#000004",
text_font_family = "Damogran",
text_font_google = NULL,
header_font_family = "Magrathea",
header_font_google = NULL,
outfile = NULL
)
)
theme <- with_clean_session(function(css) {
writeLines(css, "xaringan-themer.css")
list(
text = xaringanthemer::theme_xaringan_get_value(c("text_font_family", "text_font_is_google", "text_color", "text_bold_color")),
code_font_is_google = xaringanthemer::theme_xaringan_get_value("code_font_is_google"),
inverse_text_color = xaringanthemer::theme_xaringan_get_value("inverse_text_color"),
background_color = xaringanthemer::theme_xaringan_get_value("background_color"),
header_color = xaringanthemer::theme_xaringan_get_value("header_color"),
inverse_header_color = xaringanthemer::theme_xaringan_get_value("inverse_header_color"),
base_font_size = xaringanthemer:::get_base_font_size(),
accent_color = xaringanthemer:::get_theme_accent_color(),
accent_color_inverse = xaringanthemer:::get_theme_accent_color(inverse = TRUE)
)
}, list(css = css))

expect_equal(theme$text$text_font_family, "Damogran")
expect_equal(theme$text$text_color, "#000001")
expect_false(theme$text$text_font_is_google)
expect_true(theme$code_font_is_google)
expect_equal(theme$text$text_bold_color, "#000004")
expect_equal(theme$inverse_text_color, "#100000")
expect_equal(theme$background_color, "#000002")
expect_equal(theme$header_color, "#000003")
expect_equal(theme$inverse_header_color, "#300000")
expect_equal(theme$base_font_size, 16)
expect_equal(theme$accent_color, "#000003")
expect_equal(theme$accent_color_inverse, "#300000")
})
})

describe("web_to_point()", {
it("is invariant when x is pt", {
expect_equal(web_to_point("24pt", 11), 24)
expect_equal(web_to_point("24pt", 11), 24)
expect_equal(web_to_point("24pt", 11, scale = 3), 24)
})

it("scales px", {
expect_equal(web_to_point("24px", 10, 1), 24)
expect_equal(web_to_point("24px", 10, 0.5), 12)
})

it("scales r/em", {
expect_equal(web_to_point("2.4em", 10, 1), 24)
expect_equal(web_to_point("2.4rem", 10, 1), 24)
expect_equal(web_to_point("2.4em", 10, 0.5), 12)
expect_equal(web_to_point("2.4rem", 10, 0.5), 12)
})

it("returns NULL if input is NULL or poorly defined", {
expect_null(web_to_point(NULL))
expect_null(web_to_point("NULL", 1))
})
})

describe("scale_xaringan_colour_continuous()", {
it("errors if no color or default available", {
expect_error(
with_clean_session(function() {
xaringanthemer:::get_theme_accent_color()
})
)
})
})

Loading…
Annulla
Salva