Преглед изворни кода

More ggplot tests, store font_is_google in pkg env

tags/v0.3.0
Garrick Aden-Buie пре 6 година
родитељ
комит
802c2a557f
5 измењених фајлова са 183 додато и 13 уклоњено
  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 Прегледај датотеку

@@ -757,6 +757,7 @@ requires_xaringanthemer_env <- function(css_file = NULL, try_css = TRUE) {
#' - `code_font_family`
#' - `code_font_family_fallback`
#' - `code_font_google`
#' - `code_font_is_google`
#' - `code_font_size`
#' - `code_font_url`
#' - `code_highlight_color`
@@ -777,6 +778,7 @@ requires_xaringanthemer_env <- function(css_file = NULL, try_css = TRUE) {
#' - `header_color`
#' - `header_font_family`
#' - `header_font_google`
#' - `hedaer_font_is_google`
#' - `header_font_url`
#' - `header_font_weight`
#' - `header_h1_font_size`
@@ -799,6 +801,7 @@ requires_xaringanthemer_env <- function(css_file = NULL, try_css = TRUE) {
#' - `text_font_family`
#' - `text_font_family_fallback`
#' - `text_font_google`
#' - `text_font_is_google`
#' - `text_font_size`
#' - `text_font_url`
#' - `text_font_weight`
@@ -816,13 +819,17 @@ requires_xaringanthemer_env <- function(css_file = NULL, try_css = TRUE) {
theme_xaringan_get_value <- function(setting, css_file = NULL) {
requires_xaringanthemer_env(css_file = css_file)
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)) {
return(NULL)
}
@@ -831,20 +838,19 @@ web_to_point <- function(x, px_per_em = NULL, scale = 1) {
return(as.numeric(sub("pt$", "", x)))
} else if (grepl("px$", x)) {
x <- as.numeric(sub("px$", "", x))
return(x * 0.75)
return(x * scale)
} else if (grepl("r?em$", x)) {
x <- as.numeric(sub("r?em$", "", x))
return(x * px_per_em * 0.75)
return(x * px_per_em * scale)
} else {
return()
}
}

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)) {
# assume 16px base font size
16

+ 9
- 1
R/style_xaringan.R Прегледај датотеку

@@ -212,7 +212,15 @@ style_xaringan <- function(
)
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")

+ 9
- 1
inst/scripts/style_xaringan_body.R Прегледај датотеку

@@ -84,7 +84,15 @@ title_slide_background_size <- title_slide_background_size %||% (
)
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")


+ 3
- 0
man/theme_xaringan_get_value.Rd Прегледај датотеку

@@ -32,6 +32,7 @@ Style settings used by xaringanthemer include:
\item \code{code_font_family}
\item \code{code_font_family_fallback}
\item \code{code_font_google}
\item \code{code_font_is_google}
\item \code{code_font_size}
\item \code{code_font_url}
\item \code{code_highlight_color}
@@ -52,6 +53,7 @@ Style settings used by xaringanthemer include:
\item \code{header_color}
\item \code{header_font_family}
\item \code{header_font_google}
\item \code{hedaer_font_is_google}
\item \code{header_font_url}
\item \code{header_font_weight}
\item \code{header_h1_font_size}
@@ -74,6 +76,7 @@ Style settings used by xaringanthemer include:
\item \code{text_font_family}
\item \code{text_font_family_fallback}
\item \code{text_font_google}
\item \code{text_font_is_google}
\item \code{text_font_size}
\item \code{text_font_url}
\item \code{text_font_weight}

+ 146
- 1
tests/testthat/test-ggplot2.R Прегледај датотеку

@@ -1,4 +1,10 @@
# 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()", {

@@ -173,3 +179,142 @@ describe("theme_xaringan_inverse()", {
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…
Откажи
Сачувај