R/draft_rmd.R

Defines functions draft_qbdpdf2 draft_qtufte draft_qbeamerslides draft_qprojektreport draft_quagprojectreport draft_qgenericdoc draft_qemptydoc generic_rmd_draft

Documented in draft_qbdpdf2 draft_qbeamerslides draft_qemptydoc draft_qgenericdoc draft_qprojektreport draft_qtufte draft_quagprojectreport generic_rmd_draft

## ---- Generic Document Draft Wrapper Function -------------------------------
#
#
#' @title Generic Document Draft Wrapper Function
#'
#' @description
#' This function calls \code{rmarkdown::draft()} to create a new document.
#'
#'
#' @param ps_path path to the document to be created
#' @param ps_template name of the template
#' @param ps_package package containing the template
#' @param ps_create_dir flag whether document should be put into new directory
#' @param pb_open flag whether to open the newly created document in rstudio
#' @param pl_repl_value list of template placeholder replacement values
#'
generic_rmd_draft <- function(ps_path,
                              ps_template,
                              ps_package,
                              ps_create_dir,
                              pb_open,
                              pl_repl_value){
  # remove any file extensions
  s_path <- tools::file_path_sans_ext(ps_path)
  # use the draft function of rmarkdown
  rmarkdown::draft(file       = s_path,
                   template   = ps_template,
                   package    = ps_package,
                   create_dir = ps_create_dir,
                   edit       = FALSE)

  ## ---- Path specific changes ------
  ### create full path to new rmd file based on option and ending
  if (ps_create_dir == 'default') {
    create_dir <- get_default_create_dir(ps_template = ps_template, ps_package = ps_package)
  } else {
    create_dir <- ps_create_dir
  }
  if (create_dir){
    s_base_path <- basename(s_path)
    s_path <- file.path(s_path, s_base_path)
  }
  if (!identical(tolower(tools::file_ext(s_path)), "rmd"))
    s_path <- paste(s_path, '.Rmd', sep = '')

  ## ---- Placehoder Substitution ----
  ### substitute placeholers with values
  l_default_repl_value <- get_generic_replacement_values()
  if (is.null(pl_repl_value)){
    l_repl_value <- l_default_repl_value
  } else {
    l_repl_value <- merge_list_to_default(pl_base = pl_repl_value, pl_default = l_default_repl_value)
  }
  sub_pattern_replacement(ps_path = s_path, pl_repl_value = l_repl_value)

  # open the file, if specified
  if (pb_open) {
    usethis::edit_file(path = s_path)
  }

  return(invisible(NULL))

}

## ---- Intermediate Title here -------------------

## ---- Create Empty Generic Rmarkdown Document -------------------------------
#'
#'
#' @title Create Empty Generic Rmarkdown Document
#'
#' @description
#' Wrapper function for rmarkdown::draft to create an empty generic
#' Rmarkdown document with reasonable default values.
#'
#' @details
#' The template 'qemptydoc' is taken from this package 'qrmdtmpl'.
#'
#' @param ps_path path to the document to be created
#' @param ps_create_dir specify whether to create a new directory
#' @param pb_open open the created file in rstudio editor
#' @param pl_repl_value list with values to replace placeholders
#'
#' @return invisible(TRUE)
#'
#' @examples
#' \dontrun{
#' draft_qemptydoc(ps_path = 'empty_test_doc')
#' }
#' @export draft_qemptydoc
draft_qemptydoc <- function(ps_path,
                            ps_create_dir = "default",
                            pb_open       = rlang::is_interactive(),
                            pl_repl_value = NULL){
  # call generic draft wrapper
  generic_rmd_draft(ps_path       = ps_path,
                    ps_template   = "qemptydoc",
                    ps_package    = "qrmdtmpl",
                    ps_create_dir = ps_create_dir,
                    pb_open       = pb_open,
                    pl_repl_value = pl_repl_value)
    return(invisible(NULL))
}


## ---- Generic Qualitas AG Document ------------------------------------------
#'
#' @title Create Generic Qualitas Document
#'
#' @description
#' Wrapper function for rmarkdown::draft to create an empty Qualitas AG
#' Rmarkdown document including the logo on the title page.
#'
#' @details
#' The template 'qemptydoc' is taken from this package 'qrmdtmpl'.
#'
#' @param ps_path path to the document to be created
#' @param ps_create_dir specify whether to create a new directory
#' @param pb_open open the created file in rstudio editor
#' @param pl_repl_value list with values to replace placeholders
#'
#' @return invisible(TRUE)
#'
#' @examples
#' \dontrun{
#' draft_qgenericdoc(ps_path = 'empty_test_doc')
#' }
#' @export draft_qgenericdoc
draft_qgenericdoc <- function(ps_path,
                              ps_create_dir = "default",
                              pb_open       = rlang::is_interactive(),
                              pl_repl_value = NULL){
  # call generic draft wrapper
  generic_rmd_draft(ps_path       = ps_path,
                    ps_template   = "qgenericdoc",
                    ps_package    = "qrmdtmpl",
                    ps_create_dir = ps_create_dir,
                    pb_open       = pb_open,
                    pl_repl_value = pl_repl_value)
    return(invisible(NULL))
}


## ---- Qualitas AG Report Document ------------------------------------------
#'
#' @title Create Qualitas Report Document
#'
#' @description
#' Wrapper function for rmarkdown::draft to create an empty Qualitas AG
#' report document including the logo on the title page.
#'
#' @details
#' The template 'quagprojectreport' is taken from this package 'qrmdtmpl'.
#'
#' @param ps_path path to the document to be created
#' @param ps_create_dir specify whether to create a new directory
#' @param pb_open open the created file in rstudio editor
#' @param pl_repl_value list with values to replace placeholders
#'
#' @return invisible(TRUE)
#'
#' @examples
#' \dontrun{
#' draft_quagprojectreport(ps_path = 'empty_test_doc')
#' }
#' @export draft_quagprojectreport
draft_quagprojectreport <- function(ps_path,
                                    ps_create_dir = "default",
                                    pb_open       = rlang::is_interactive(),
                                    pl_repl_value = NULL){
  # call generic draft wrapper
  generic_rmd_draft(ps_path       = ps_path,
                    ps_template   = "quagprojectreport",
                    ps_package    = "qrmdtmpl",
                    ps_create_dir = ps_create_dir,
                    pb_open       = pb_open,
                    pl_repl_value = pl_repl_value)
    return(invisible(NULL))
}


## ---- Qualitas AG FB ZWS Report Dokument ------------------------------------------
#'
#' @title Create Qualitas FB ZWS Report (German)
#'
#' @description
#' Wrapper function for rmarkdown::draft to create a skeleton for a Qualitas AG
#' report document in German. The document includes the logo on the title page.
#'
#' @details
#' The template 'qprojektreport' is taken from this package 'qrmdtmpl'.
#'
#' @param ps_path path to the document to be created
#' @param ps_create_dir specify whether to create a new directory
#' @param pb_open open the created file in rstudio editor
#' @param pl_repl_value list with values to replace placeholders
#'
#' @return invisible(NULL)
#'
#' @examples
#' \dontrun{
#' draft_qprojektreport(ps_path = 'empty_test_doc')
#' }
#' @export draft_qprojektreport
draft_qprojektreport <- function(ps_path,
                                 ps_create_dir = "default",
                                 pb_open       = rlang::is_interactive(),
                                 pl_repl_value = NULL){

  # specific default for this format
  l_default_repl_value <- get_repl_value_defaults_qprojektreport()
  if (is.null(pl_repl_value)){
    l_repl_value <- l_default_repl_value
  } else {
    l_repl_value <- merge_list_to_default(pl_base = pl_repl_value, pl_default = l_default_repl_value)
  }
  # call generic draft wrapper
  generic_rmd_draft(ps_path       = ps_path,
                    ps_template   = "qprojektreport",
                    ps_package    = "qrmdtmpl",
                    ps_create_dir = ps_create_dir,
                    pb_open       = pb_open,
                    pl_repl_value = l_repl_value)
    return(invisible(NULL))
}



## ---- Empty Beamer Slides ---------------------------------------------------
#'
#' @title Create Empty Beamer Slides
#'
#' @description
#' Wrapper function to create empty beamer slides document using
#' \code{rmarkdown::draft()}.
#'
#' @details
#' The template quagbeamer is taken from this package qrmdtmpl.
#'
#' @param ps_path path to the document to be created
#' @param ps_create_dir specify whether to create a new directory
#' @param pb_open open the created file in rstudio editor
#' @param pl_repl_value list with values to replace placeholders
#'
#' @examples
#' \dontrun{
#' draft_quagbeamerslides(ps_path = 'qbeamer_slides')
#' }
#'
#' @export draft_qbeamerslides
draft_qbeamerslides <- function(ps_path,
                                ps_create_dir = "default",
                                pb_open       = rlang::is_interactive(),
                                pl_repl_value = NULL){
  # call generic draft wrapper
  generic_rmd_draft(ps_path       = ps_path,
                    ps_template   = "quagbeamer",
                    ps_package    = "qrmdtmpl",
                    ps_create_dir = ps_create_dir,
                    pb_open       = pb_open,
                    pl_repl_value = pl_repl_value)
    return(invisible(NULL))
}


## ---- Tufte Report ----------------------------------------------------------

#' Create Draft Version of a Tufte Report
#'
#' @description
#' Wrapper function to create a draft of a Tufte Report using
#' \code{rmarkdown::draft()}.
#'
#' @details
#' The used RMarkdown template qtufte is taken from this package qrmdtmpl.
#'
#' @param ps_path path to the document to be created
#' @param ps_create_dir specify whether to create a new directory
#' @param pb_open open the created file in rstudio editor
#' @param pl_repl_value list with values to replace placeholders
#'
#' @export draft_qtufte
#'
#' @examples
#' \dontrun{
#' draft_qtufte(ps_path = "qtufte_report")
#' }
draft_qtufte <- function(ps_path,
                         ps_create_dir = "default",
                         pb_open       = rlang::is_interactive(),
                         pl_repl_value = NULL){
  # specific default for this format
  l_default_repl_value <- get_repl_value_defaults_tufte()
  if (is.null(pl_repl_value)){
    l_repl_value <- l_default_repl_value
  } else {
    l_repl_value <- merge_list_to_default(pl_base = pl_repl_value, pl_default = l_default_repl_value)
  }
  # call generic draft wrapper
  generic_rmd_draft(ps_path       = ps_path,
                    ps_template   = "qtufte",
                    ps_package    = "qrmdtmpl",
                    ps_create_dir = ps_create_dir,
                    pb_open       = pb_open,
                    pl_repl_value = l_repl_value)
    return(invisible(NULL))
}


## ---- Bookdown PDF Document -------------------------------------------------
#
#
#' @title Create Bookdown PDF Document
#'
#' @description
#' Wrapper to create bookdown pdf document using \code{rmarkdown::draft}.
#'
#' @param ps_path path to newly created document
#' @param ps_create_dir option whether to create new directory for new document
#' @param pb_open whether document should be opened
#' @param pl_repl_value list with pattern replacement values
#'
#' @export draft_qbdpdf2
#'
#' @examples
#' \dontrun{
#' draft_qbdpdf2(ps_path = "example_bdpdf2")
#' }
draft_qbdpdf2 <- function(ps_path,
                          ps_create_dir  = "default",
                          pb_open        = rlang::is_interactive(),
                          pl_repl_value  = NULL){
  # call generic draft wrapper
  generic_rmd_draft(ps_path       = ps_path,
                    ps_template   = "qbdpdf2",
                    ps_package    = "qrmdtmpl",
                    ps_create_dir = ps_create_dir,
                    pb_open       = pb_open,
                    pl_repl_value = pl_repl_value)


}
fbzwsqualitasag/qrmdtmpl documentation built on April 14, 2022, 6:42 p.m.