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