1# nocov start
2eng_glue <- function(options) {
3  glue_options <- options[names(options) %in% names(formals(glue))]
4  glue_options$.envir <- glue_options$.envir %||% knitr::knit_global()
5
6  out <- do.call(glue, c(list(options$code), glue_options))
7  knitr::engine_output(options, options$code, out)
8}
9
10eng_glue_sql <- function(options) {
11  glue_sql_options <- options[names(options) %in% names(formals(glue_sql))]
12  glue_sql_options$.con <- glue_sql_options$.con %||% options$connection
13  glue_sql_options$.envir <- glue_sql_options$.envir %||% knitr::knit_global()
14  con <- glue_sql_options$.con
15  if (is.character(con)) {
16    con <- get(con, envir = knitr::knit_global())
17  }
18
19  if (is.null(con)) {
20    stop(.call = FALSE,
21    "The 'connection' option (DBI connection) is required for glue_sql chunks.")
22  }
23  glue_sql_options$.con <- con
24  options$code <- do.call(glue_sql, c(list(paste0(options$code, collapse = "\n")), glue_sql_options))
25  options$engine <- "sql"
26  knitr::knit_engines$get("sql")(options)
27}
28
29# nocov end
30