Skip to content

Commit

Permalink
Correctly build variables for pandoc
Browse files Browse the repository at this point in the history
This fix also addition of 91bc2bd and add tests
  • Loading branch information
cderv committed May 2, 2023
1 parent 04743ea commit 0af04e4
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 15 deletions.
2 changes: 1 addition & 1 deletion R/article.R
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ ims_article <- function(journal = c("aoas", "aap", "aop", "aos", "sts"),
)

# Convert to pandoc arguments
pandoc_arg_list <- vec_to_pandoc_variable_args(args)
pandoc_arg_list <- list_to_pandoc_variable_args(args)

pdf_document_format(
"ims",
Expand Down
2 changes: 1 addition & 1 deletion R/ieee_article.R
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ ieee_article <- function(draftmode = c("final", "draft", "draftcls", "draftclsno
args <- c(args, plist[plist])

# Convert to pandoc arguments
pandoc_arg_list <- vec_to_pandoc_variable_args(args)
pandoc_arg_list <- list_to_pandoc_variable_args(args)

pdf_document_format(
"ieee",
Expand Down
2 changes: 1 addition & 1 deletion R/oup_article.R
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ oup_article <- function( # Controls template to use. 1 for newer template.
)

# Convert to pandoc arguments
args <- vec_to_pandoc_variable_args(args)
args <- list_to_pandoc_variable_args(args)

# namedate
if (namedate) {
Expand Down
25 changes: 15 additions & 10 deletions R/utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,19 @@ render_draft <- function(journal, output_options = NULL, quiet = FALSE) {
}

# Use to create variables command for Pandoc from a named vector
vec_to_pandoc_variable_args <- function(v_args) {
truthy <- Filter(isTRUE, v_args)
v_args <- setdiff(v_args, truthy)
list_to_pandoc_variable_args <- function(v_args) {
truthy <- which(sapply(v_args, isTRUE))
truthy_arg <- NULL
if (length(truthy) > 0) {
truthy_arg <- mapply(
rmarkdown::pandoc_variable_arg,
names(v_args[truthy]),
SIMPLIFY = FALSE,
USE.NAMES = FALSE
)
v_args <- v_args[-truthy]
}

# Convert to pandoc arguments
pandoc_arg_list <- c(
mapply(
Expand All @@ -151,12 +161,7 @@ vec_to_pandoc_variable_args <- function(v_args) {
SIMPLIFY = FALSE,
USE.NAMES = FALSE
),
mapply(
rmarkdown::pandoc_variable_arg,
names(truthy),
SIMPLIFY = FALSE,
USE.NAMES = FALSE
)
truthy_arg
)
unlist(pandoc_arg_list)
}
Expand Down Expand Up @@ -210,7 +215,7 @@ pdf_document_format <- function(format,
fmt$inherits <- "pdf_document"

## Set some variables to adapt template based on Pandoc version
args <- vec_to_pandoc_variable_args(list(
args <- list_to_pandoc_variable_args(list(
pandoc3 = rmarkdown::pandoc_available("3")
))
fmt$pandoc$args <- c(fmt$pandoc$args, args)
Expand Down
15 changes: 13 additions & 2 deletions tests/testit/test-utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,24 @@ assert("all journals are listed and have a template folder", {
})

assert("Named vector is transformed to pandoc variable args", {
(vec_to_pandoc_variable_args(c(a = "b")) %==%
(list_to_pandoc_variable_args(c(a = "b")) %==%
c(rmarkdown::pandoc_variable_arg("a", "b"))
)
(vec_to_pandoc_variable_args(c(a = "b", c = "d")) %==%
(list_to_pandoc_variable_args(c(a = "b", c = "d")) %==%
c(
rmarkdown::pandoc_variable_arg("a", "b"),
rmarkdown::pandoc_variable_arg("c", "d")
)
)
(list_to_pandoc_variable_args(list(c = TRUE)) %==%
c(
rmarkdown::pandoc_variable_arg("c")
)
)
(list_to_pandoc_variable_args(list(a = "b", c = TRUE)) %==%
c(
rmarkdown::pandoc_variable_arg("a", "b"),
rmarkdown::pandoc_variable_arg("c")
)
)
})

0 comments on commit 0af04e4

Please sign in to comment.