Move processing of reveal_options out of main format (#126)
This includes the addition of unit tests
diff --git a/R/revealjs_presentation.R b/R/revealjs_presentation.R
index 8ddb818..360465b 100644
--- a/R/revealjs_presentation.R
+++ b/R/revealjs_presentation.R
@@ -136,40 +136,21 @@
# additional reveal options
if (is.list(reveal_options)) {
- add_reveal_option <- function(option, value) {
- if (is.logical(value)) {
- value <- jsbool(value)
- } else if (is.character(value)) {
- # Special handling for some chalkboard plugin options
- # e.g: color: [ 'rgba(0,0,255,1)', 'rgba(255,255,255,0.5)' ]
- if (grepl("chalkboard-(background|color|draw|pen)", option)) {
- value <- sprintf("[%s]", paste(paste0("'", value, "'"), collapse = ", "))
- }
- # Add quotes around some config that can be several type
- # like number or percent unit or slideNumber = true or slideNumber = 'c/t'
- if (
- option %in% c("slideNumber") ||
- (option %in% c("width", "height") && grepl("%$", value))) {
- value <- paste0("'", value, "'")
- }
- }
- args <<- c(args, pandoc_variable_arg(option, value))
- }
-
for (option in names(reveal_options)) {
# special handling for nested options
if (option %in% c("chalkboard", "menu")) {
nested_options <- reveal_options[[option]]
for (nested_option in names(nested_options)) {
- add_reveal_option(
- paste0(option, "-", nested_option),
- nested_options[[nested_option]]
+ args <- c(args,
+ process_reveal_option(
+ paste0(option, "-", nested_option),
+ nested_options[[nested_option]]
+ )
)
}
- }
- # standard top-level options
- else {
- add_reveal_option(option, reveal_options[[option]])
+ } else {
+ # standard top-level options
+ args <- c(args, process_reveal_option(option, reveal_options[[option]]))
}
}
}
diff --git a/R/utils.R b/R/utils.R
index f681e24..52381a2 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -6,4 +6,25 @@
}
# Convert boolean from R to JS boolean
-jsbool <- function(value) ifelse(value, "true", "false")
\ No newline at end of file
+jsbool <- function(value) ifelse(value, "true", "false")
+
+# transfrom reveal option as pandoc variable
+process_reveal_option <- function(option, value) {
+ if (is.logical(value)) {
+ value <- jsbool(value)
+ } else if (is.character(value)) {
+ # Special handling for some chalkboard plugin options
+ # e.g: color: [ 'rgba(0,0,255,1)', 'rgba(255,255,255,0.5)' ]
+ if (grepl("chalkboard-(background|color|draw|pen)", option)) {
+ value <- sprintf("[%s]", paste(paste0("'", value, "'"), collapse = ", "))
+ }
+ # Add quotes around some config that can be several type
+ # like number or percent unit or slideNumber = true or slideNumber = 'c/t'
+ if (
+ option %in% c("slideNumber") ||
+ (option %in% c("width", "height") && grepl("%$", value))) {
+ value <- paste0("'", value, "'")
+ }
+ }
+ pandoc_variable_arg(option, value)
+}
\ No newline at end of file