Skip to content

Commit

Permalink
added current_markdown_colour()
Browse files Browse the repository at this point in the history
  • Loading branch information
msberends committed Jan 10, 2024
1 parent 3aa8701 commit fac07e8
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 2 deletions.
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: certestyle
Title: A Certe R Package for Applying Certe Organisational Style
Version: 1.4.6
Version: 1.5.0
Authors@R: c(
person(given = c("Matthijs", "S."),
family = "Berends",
Expand Down
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export(big_mark)
export(certe.colours)
export(certe_style_transformer)
export(colourpicker)
export(current_markdown_colour)
export(dec_mark)
export(dec_mark_english)
export(font_black)
Expand Down
56 changes: 56 additions & 0 deletions R/rmarkdown.R
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,59 @@ rmarkdown_logo <- function(logo_type = "certe") {
}
out
}

#' Get Current Markdown Colour
#'
#' This function determines the Certe theme colour currently used in a markdown document (Quarto or R Markdown), based on the YAML header.
#' @details
#' It returns a Certe colour if one is set in the YAML header, and checks in this order:
#'
#' 1. `colour-main`
#' 2. `colour-titlepage-titlebanner`
#' 3. `colour-titlepage-full`
#' 4. `colour-verticalbars`
#' 5. `colour-heading1`
#'
#' If none is set, it returns `"certeblauw"`.
#'
#' This function is the default to set the theme for [`tbl_flextable()`][certetoolbox::tbl_flextable()].
#' @export
current_markdown_colour <- function() {
params <- rmarkdown::metadata
convert_to_certe_colour <- function(col) {
if (grepl("certe", col)) {
return(gsub(".*(certe[a-z]+).*", "\\1", col))
} else {
if (!grepl("^#", col)) {
col <- paste0("#", col)
}
# check 'certe.colours' (a certestyle object)
out <- names(certe.colours[certe.colours == col])
if (length(out) == 0 || !grepl("certe", out)) {
return("")
} else {
# return without numbers, so "certegroen" instead of "certegroen3"
return(gsub("[^a-z]", "", out))
}
}
}
if ("colour-main" %in% names(params) && grepl("certe", convert_to_certe_colour(params$`colour-main`))) {
# take main colour if set
convert_to_certe_colour(params$`colour-main`)
} else if ("colour-titlepage-titlebanner" %in% names(params) && grepl("certe", convert_to_certe_colour(params$`colour-titlepage-titlebanner`))) {
# take vertical bars colour if set
convert_to_certe_colour(params$`colour-titlepage-titlebanner`)
} else if ("colour-titlepage-full" %in% names(params) && grepl("certe", convert_to_certe_colour(params$`colour-titlepage-full`))) {
# take vertical bars colour if set
convert_to_certe_colour(params$`colour-titlepage-full`)
} else if ("colour-verticalbars" %in% names(params) && grepl("certe", convert_to_certe_colour(params$`colour-verticalbars`))) {
# take vertical bars colour if set
convert_to_certe_colour(params$`colour-verticalbars`)
} else if ("colour-heading1" %in% names(params) && grepl("certe", convert_to_certe_colour(params$`colour-heading1`))) {
# take heading 1 colour if set
convert_to_certe_colour(params$`colour-heading1`)
} else {
# default
"certeblauw"
}
}
2 changes: 1 addition & 1 deletion man/colourpicker.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions man/current_markdown_colour.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit fac07e8

Please sign in to comment.