#' Write journal for tactics
#'
#' Produce file content and filenames for a daily, weekly and final tactics journal
#'
#' @param template_in template to use in the journal
#' @param date_start date to start journal on - must be a Sunday or Monday
#' @param date_end date to end journal on - must be a Saturday (if start is Sunday) or Sunday (if start is Monday)
#' @return A tibble with two variables: a vector of markdown file contents and a vector of filenames
#' @importFrom rlang .data
#' @importFrom magrittr %>%
#' @export
journal_tactics <- function(template_in, date_start, date_end){
# Tactics defaults
filename_body <- 'tactics.md'
template_tibble <- new_journalr_tbl_df(date_start, "week", date_end)
# Tactics-specific ----
tactic_headers <- template_in %>%
# Get only the lines with one or more list element ("*", "-", "+") followed by a space
stringr::str_split("\n") %>%
unlist(use.names = FALSE) %>%
stringr::str_subset("^[\\*\\+\\-] ") %>%
# Ensure that tactic indicators have a H2 heading
stringr::str_replace_all("^[\\*\\+\\-]", "##")
daily_content <- template_tibble %>%
dplyr::mutate(
tactic_body = purrr::map_chr(
.data$date_vec, ~paste(glue::glue("### {.x} (<YES/NO/SKIP>)\n\n* \n\n"), collapse = "\n")
),
file_contents = paste0(
"# ", .data$titlename, "\n\n",
purrr::map_chr(
.data$tactic_body, ~paste(glue::glue("{tactic_headers}\n\n{.x}\n\n"), collapse = "\n")
)
),
)
# Weekly journals
weekly_body_tactics_tmp <- paste0("### ", daily_content$titlename, " - <YES/NO/SKIP> (<SCORE>)\n\n* \n") %>%
stringr::str_c(collapse = "\n")
weekly_body_tactics <- paste0(tactic_headers, "\n\n", weekly_body_tactics_tmp) %>%
stringr::str_c(collapse = "\n")
n_tactics <- length(tactic_headers)
weekly_body_overall <- paste0("### ", daily_content$titlename,
glue::glue(" - <n_YES>/{n_tactics} (<PCT>%)"), "\n\n* \n\n") %>%
stringr::str_c(collapse = "\n")
weekly_body <- paste0(weekly_body_tactics, "\n\n", "## Overall\n\n", weekly_body_overall)
weekly_title <- paste0(
"Weekly reflections: ",
format_date_to_date(date_start, date_end, format_date)
)
weekly_contents <- weekly_body %>%
add_h1_title(weekly_title)
# Get new tibble of content and filenames
daily_out <- daily_content %>%
add_files_template_tibble("week", filename_body) %>%
dplyr::select(.data$file_contents, .data$filename)
weekly_out <- tibble::tibble(
file_contents = weekly_contents,
filename = paste0("!weekly_", filename_body),
)
dplyr::bind_rows(daily_out, weekly_out)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.