From 5402c33b708d6588f1e339a6a7d946dd8017bb18 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 13 May 2024 14:56:52 +0200 Subject: [PATCH 01/36] add util to create list venue sorted registers --- R/register.R | 16 ++++++++++++++-- R/utils_register_sort.R | 13 +++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 R/utils_register_sort.R diff --git a/R/register.R b/R/register.R index 6dacf86..4d4bc4c 100644 --- a/R/register.R +++ b/R/register.R @@ -19,12 +19,24 @@ #' #' @export register_render <- function(register = read.csv("register.csv", as.is = TRUE), + sort_by = c("venue"), outputs = c("html", "md", "json")) { register_table <- preprocess_register(register) - md_columns_widths <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" + list_register_tables <- c() + list_register_tables[["original"]] <- register_table + + # Sorting the tables + for (sort in sort_by) { + if (sort == "venue") { + list_venue_sorted_register_tables <- create_list_venue_sorted_register_tables(register_table) + list_register_tables <- c(list_register_tables, list_venue_sorted_register_tables) + } + } - if ("md" %in% outputs) render_register_md(register_table, md_columns_widths) + # Rendering files + md_columns_widths <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" + if ("md" %in% outputs) render_register_md(list_register_tables, md_columns_widths) if ("html" %in% outputs) render_register_html(register_table, register, md_columns_widths) if ("json" %in% outputs) render_register_json(register_table, register) diff --git a/R/utils_register_sort.R b/R/utils_register_sort.R new file mode 100644 index 0000000..645c832 --- /dev/null +++ b/R/utils_register_sort.R @@ -0,0 +1,13 @@ +create_list_venue_sorted_register_tables <- function(register_table) { + # List of venues + list_venues <- unique(register_table$Type) + + # Loop over venues. For each venue we create a separate register table + list_venue_sorted_register_tables <- list() + for (venue in list_venues) { + sorted_register_table <- register_table[register_table$`Type`==venue, ] + rownames(sorted_register_table) <- NULL # Reset row names to remove row numbers + list_venue_sorted_register_tables[[paste("venue", venue, " ")]] <- sorted_register_table + } + return(list_venue_sorted_register_tables) +} \ No newline at end of file From 858b1ff11d5c7c81f447ea83b3c16bba073b64e7 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 13 May 2024 15:01:01 +0200 Subject: [PATCH 02/36] Change render register md function --- R/utils_render_register.R | 71 ++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 76954a1..06b12a1 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -1,21 +1,68 @@ +load_template_file <- function(template_path){ + if (!file.exists(template_path)){ + stop("No register table template found") + } + + template_content <- readLines(template_path) + return(template_content) +} + +adjust_markdown_title <- function(markdown_table, register_table_name){ + title_addition <- "" + + if (grepl("venue", register_table_name)){ + venue_name <- sub("^venue", "", register_table_name) + title_addition <- paste("for", venue_name, "") + } + + markdown_table <- gsub("\\$title_addition\\$", title_addition, markdown_table) + return(markdown_table) +} + #' Function for rendering the register markdown file. #' #' @param register_table The register table #' @param md_columns_widths The column widths for the markdown file #' @return None -render_register_md <- function(register_table, md_columns_widths) { - capture.output( - cat("---\ntitle: CODECHECK Register\n---"), - knitr::kable(register_table, format = "markdown"), - file = "register.md" - ) - # hack to reduce column width of 4th column - md_table <- readLines("register.md") - md_table[6] <- md_columns_widths - writeLines(md_table, "docs/register.md") - file.remove("register.md") - # TODO: fix table column width, e.g. via using a register.Rm +render_register_md <- function(list_register_tables, md_columns_widths) { + template_path <- system.file("extdata", "template_register.md", package = "codecheck") + template_content <- load_template_file(template_path) + + # Looping over the list of register tables and creating a md file for each + for (register_table_name in names(list_register_tables)) { + register_table <- list_register_tables[[register_table_name]] + + markdown_table <- adjust_markdown_title(template_content, register_table_name) + + # Fill in the content + markdown_content <- capture.output(kable(register_table, format = "markdown")) + markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) + + # Adding column width + markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) + markdown_table[7] <- md_columns_widths + + # Writing the output + if (grepl("venue", register_table_name)){ + folder_venue_name <- sub("^venue", "", register_table_name) + folder_venue_name <- trimws(folder_venue_name) # Removing trailing space + folder_venue_name <- gsub(" ", "_", gsub("[()]", "", folder_venue_name)) + + output_file_path <- paste("docs/venues/", folder_venue_name, sep = "") + } + else { + output_file_path <- "docs" + } + + # Creating the directory if it does not exist + if (!dir.exists(output_file_path)) { + dir.create(output_file_path, recursive = TRUE, showWarnings = TRUE) + } + output_file_path <- paste(output_file_path, "/register.md", sep = "") + + writeLines(markdown_table, output_file_path) + } } #' Function for rendering the register html file. From 513f4b47d94c134e80b292637cd321f636ba648c Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 13 May 2024 15:03:10 +0200 Subject: [PATCH 03/36] Add template for register md --- inst/extdata/templates/template_register.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 inst/extdata/templates/template_register.md diff --git a/inst/extdata/templates/template_register.md b/inst/extdata/templates/template_register.md new file mode 100644 index 0000000..fd0c86e --- /dev/null +++ b/inst/extdata/templates/template_register.md @@ -0,0 +1,5 @@ +--- +title: CODECHECK Register $title_addition$ +--- + +$content$ From cd6a00da3d5a799e57c957a6b72cc6f5a533d474 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Tue, 14 May 2024 16:48:23 +0200 Subject: [PATCH 04/36] Update render register html --- R/utils_render_register.R | 127 +++++++++++++++++++++++--------------- 1 file changed, 76 insertions(+), 51 deletions(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 06b12a1..c1c88a6 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -44,17 +44,7 @@ render_register_md <- function(list_register_tables, md_columns_widths) { markdown_table[7] <- md_columns_widths # Writing the output - if (grepl("venue", register_table_name)){ - folder_venue_name <- sub("^venue", "", register_table_name) - folder_venue_name <- trimws(folder_venue_name) # Removing trailing space - folder_venue_name <- gsub(" ", "_", gsub("[()]", "", folder_venue_name)) - - output_file_path <- paste("docs/venues/", folder_venue_name, sep = "") - } - else { - output_file_path <- "docs" - } - + output_file_path <- determine_output_directory(register_table_name) # Creating the directory if it does not exist if (!dir.exists(output_file_path)) { dir.create(output_file_path, recursive = TRUE, showWarnings = TRUE) @@ -72,51 +62,86 @@ render_register_md <- function(list_register_tables, md_columns_widths) { #' @param md_columns_widths The column widths for the markdown file #' @return None -render_register_html <- function(register_table, register, md_columns_widths) { - # add icons to the Repository column for HTML output, use a copy of the register.md - # so the inline HTML is not in the .md output - register_table$Repository <- sapply( - X = register$Repository, - FUN = function(repository) { - spec <- parse_repository_spec(repository) - if (!any(is.na(spec))) { - urrl <- "#" - - if (spec[["type"]] == "github") { - urrl <- paste0("https://github.com/", spec[["repo"]]) - paste0(" [", spec[["repo"]], "](", urrl, ")") - } else if (spec[["type"]] == "osf") { - urrl <- paste0("https://osf.io/", spec[["repo"]]) - paste0(" [", spec[["repo"]], "](", urrl, ")") - } else if (spec[["type"]] == "gitlab") { - urrl <- paste0("https://gitlab.com/", spec[["repo"]]) - paste0(" [", spec[["repo"]], "](", urrl, ")") +render_register_html <- function(list_register_tables, md_columns_widths) { + template_path <- system.file("extdata", "template_register.md", package = "codecheck") + template_content <- load_template_file(template_path) + + # Loop over each register table + for (register_table_name in names(list_register_tables)) { + register_table <- list_register_tables[[register_table_name]] + + # Adjust the title in the markdown template + markdown_table <- adjust_markdown_title(template_content, register_table_name) + + # Add icons to the Repository column for HTML output, use a copy of the register.md + register_table$Repository <- sapply( + X = register_table$Repository, + FUN = function(repository) { + spec <- parse_repository_spec(repository) + if (!any(is.na(spec))) { + urrl <- "#" + if (spec[["type"]] == "github") { + urrl <- paste0("https://github.com/", spec[["repo"]]) + return(paste0(" [", spec[["repo"]], "](", urrl, ")")) + } else if (spec[["type"]] == "osf") { + urrl <- paste0("https://osf.io/", spec[["repo"]]) + return(paste0(" [", spec[["repo"]], "](", urrl, ")")) + } else if (spec[["type"]] == "gitlab") { + urrl <- paste0("https://gitlab.com/", spec[["repo"]]) + return(paste0(" [", spec[["repo"]], "](", urrl, ")")) + } else { + return(repository) + } } else { - repository + return(repository) } - } else { - repository } + ) + + # Capture the HTML output in a markdown table first + markdown_content <- capture.output(knitr::kable(register_table, format = "markdown")) + markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) + + # Adjust column width + markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) + markdown_table[7] <- md_columns_widths + + # Determine the output path + output_file_path <- determine_output_directory(register_table_name, "html") + output_file_path <- paste(output_file_path, "/index.html", sep = "") + + # Create the directory if it does not exist + if (!dir.exists(dirname(output_file_path))) { + dir.create(dirname(output_file_path), recursive = TRUE, showWarnings = TRUE) } - ) - capture.output( - cat("---\ntitle: CODECHECK Register\n---"), - knitr::kable(register_table, format = "markdown"), - file = "docs/register-icons.md" - ) - md_table <- readLines("docs/register-icons.md") - file.remove("docs/register-icons.md") - md_table[6] <- md_columns_widths - writeLines(md_table, "docs/register-icons.md") - - rmarkdown::render( - input = "docs/register-icons.md", - # next paths are relative to input file - output_yaml = "html_document.yml", - output_file = "index.html" - ) - file.remove("docs/register-icons.md") + + # Save the modified markdown to a temporary file + temp_md_file <- tempfile(fileext = ".md") + writeLines(markdown_table, temp_md_file) + + # Render HTML from markdown + rmarkdown::render( + input = temp_md_file, + output_file = output_file_path, + output_yaml = paste0("html_document.yml") + ) + + # Optionally remove the temporary markdown file + file.remove(temp_md_file) + } +} + +# Helper function to determine output paths based on the table name +determine_output_directory <- function(register_table_name) { + if (grepl("venue", register_table_name)){ + folder_venue_name <- sub("^venue", "", register_table_name) + folder_venue_name <- trimws(folder_venue_name) # Removing trailing space + folder_venue_name <- gsub(" ", "_", gsub("[()]", "", folder_venue_name)) + return(paste0("docs/venues/", folder_venue_name)) + } else { + return(paste0("docs")) + } } #' Function for rendering the register json file. From 5c79b6b2c188ffa8b8867a0ea61c597247d06e75 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Tue, 14 May 2024 16:51:55 +0200 Subject: [PATCH 05/36] move helper function determine_output_directory to top --- R/utils_render_register.R | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index c1c88a6..9b30642 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -25,6 +25,18 @@ adjust_markdown_title <- function(markdown_table, register_table_name){ #' @param md_columns_widths The column widths for the markdown file #' @return None +# Helper function to determine output paths based on the table name +determine_output_directory <- function(register_table_name) { + if (grepl("venue", register_table_name)){ + folder_venue_name <- sub("^venue", "", register_table_name) + folder_venue_name <- trimws(folder_venue_name) # Removing trailing space + folder_venue_name <- gsub(" ", "_", gsub("[()]", "", folder_venue_name)) + return(paste0("docs/venues/", folder_venue_name)) + } else { + return(paste0("docs")) + } +} + render_register_md <- function(list_register_tables, md_columns_widths) { template_path <- system.file("extdata", "template_register.md", package = "codecheck") template_content <- load_template_file(template_path) @@ -124,7 +136,7 @@ render_register_html <- function(list_register_tables, md_columns_widths) { rmarkdown::render( input = temp_md_file, output_file = output_file_path, - output_yaml = paste0("html_document.yml") + output_yaml = "html_document.yml" ) # Optionally remove the temporary markdown file @@ -132,18 +144,6 @@ render_register_html <- function(list_register_tables, md_columns_widths) { } } -# Helper function to determine output paths based on the table name -determine_output_directory <- function(register_table_name) { - if (grepl("venue", register_table_name)){ - folder_venue_name <- sub("^venue", "", register_table_name) - folder_venue_name <- trimws(folder_venue_name) # Removing trailing space - folder_venue_name <- gsub(" ", "_", gsub("[()]", "", folder_venue_name)) - return(paste0("docs/venues/", folder_venue_name)) - } else { - return(paste0("docs")) - } -} - #' Function for rendering the register json file. #' #' @param register_table The register table From ba9136d58624de650c537bf226559364631f2ae0 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Wed, 15 May 2024 14:05:20 +0200 Subject: [PATCH 06/36] move add_repository_links to rendering --- R/utils_preprocess_register.R | 42 ----------------------------------- 1 file changed, 42 deletions(-) diff --git a/R/utils_preprocess_register.R b/R/utils_preprocess_register.R index d95e5c4..322f52c 100644 --- a/R/utils_preprocess_register.R +++ b/R/utils_preprocess_register.R @@ -60,47 +60,6 @@ add_issue_number_links <- function(register_table, register) { return(register_table) } -#' Function for adding repository links to each report in the register table. -#' -#' @param register_table The register table -#' @param register The register from the register.csv file -#' @return register_table - -add_repository_links <- function(register_table, register) { - register_table$Repository <- sapply( - X = register$Repository, - FUN = function(repository) { - spec <- parse_repository_spec(repository) - if (!any(is.na(spec))) { - urrl <- "#" - - switch(spec["type"], - "github" = { - urrl <- paste0("https://github.com/", spec[["repo"]]) - paste0("[", spec[["repo"]], "](", urrl, ")") - }, - "osf" = { - urrl <- paste0("https://osf.io/", spec[["repo"]]) - paste0("[", spec[["repo"]], "](", urrl, ")") - }, - "gitlab" = { - urrl <- paste0("https://gitlab.com/", spec[["repo"]]) - paste0("[", spec[["repo"]], "](", urrl, ")") - }, - - # Type is none of the above - { - repository - } - ) - } else { - repository - } - } - ) - return(register_table) -} - #' Function for adding check time to each report in the register table. #' #' @param register_table The register table @@ -136,7 +95,6 @@ preprocess_register <- function(register) { register_table <- register register_table <- add_report_links(register_table, register) register_table <- add_issue_number_links(register_table, register) - register_table <- add_repository_links(register_table, register) register_table <- add_check_time(register_table, register) return(register_table) } \ No newline at end of file From c1c48a11b6a23ff5d54e6c85bb4321e022ec23fc Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Wed, 15 May 2024 15:02:43 +0200 Subject: [PATCH 07/36] htmls rendered without errors --- R/register.R | 3 +- R/utils_render_register.R | 165 ++++++++++++++++++++++++-------------- 2 files changed, 107 insertions(+), 61 deletions(-) diff --git a/R/register.R b/R/register.R index 4d4bc4c..a262665 100644 --- a/R/register.R +++ b/R/register.R @@ -36,8 +36,9 @@ register_render <- function(register = read.csv("register.csv", as.is = TRUE), # Rendering files md_columns_widths <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" + if ("md" %in% outputs) render_register_md(list_register_tables, md_columns_widths) - if ("html" %in% outputs) render_register_html(register_table, register, md_columns_widths) + if ("html" %in% outputs) render_register_html(list_register_tables, md_columns_widths) if ("json" %in% outputs) render_register_json(register_table, register) return(register_table) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 9b30642..23fe111 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -1,10 +1,10 @@ -load_template_file <- function(template_path){ +load_markdown_table_template <- function(template_path){ if (!file.exists(template_path)){ stop("No register table template found") } - template_content <- readLines(template_path) - return(template_content) + markdown_table_template <- readLines(template_path) + return(markdown_table_template) } adjust_markdown_title <- function(markdown_table, register_table_name){ @@ -19,12 +19,6 @@ adjust_markdown_title <- function(markdown_table, register_table_name){ return(markdown_table) } -#' Function for rendering the register markdown file. -#' -#' @param register_table The register table -#' @param md_columns_widths The column widths for the markdown file -#' @return None - # Helper function to determine output paths based on the table name determine_output_directory <- function(register_table_name) { if (grepl("venue", register_table_name)){ @@ -37,31 +31,105 @@ determine_output_directory <- function(register_table_name) { } } +#' Function for adding repository links to each report in the register table. +#' +#' @param register_table The register table +#' @return register_table + +add_repository_links_md <- function(register_table) { + register_table$Repository <- sapply( + X = register_table$Repository, + FUN = function(repository) { + spec <- parse_repository_spec(repository) + if (!any(is.na(spec))) { + urrl <- "#" + + switch(spec["type"], + "github" = { + urrl <- paste0("https://github.com/", spec[["repo"]]) + paste0("[", spec[["repo"]], "](", urrl, ")") + }, + "osf" = { + urrl <- paste0("https://osf.io/", spec[["repo"]]) + paste0("[", spec[["repo"]], "](", urrl, ")") + }, + "gitlab" = { + urrl <- paste0("https://gitlab.com/", spec[["repo"]]) + paste0("[", spec[["repo"]], "](", urrl, ")") + }, + + # Type is none of the above + { + repository + } + ) + } else { + repository + } + } + ) + return(register_table) +} + +#' Function for adding repository links to each report in the register table. +#' +#' @param register_table The register table +#' @return register_table + +add_repository_links_html <- function(register_table) { + register_table$Repository <- sapply( + X = register_table$Repository, + FUN = function(repository) { + spec <- parse_repository_spec(repository) + if (!any(is.na(spec))) { + urrl <- "#" + if (spec[["type"]] == "github") { + urrl <- paste0("https://github.com/", spec[["repo"]]) + paste0(" [", spec[["repo"]], "](", urrl, ")") + } else if (spec[["type"]] == "osf") { + urrl <- paste0("https://osf.io/", spec[["repo"]]) + paste0(" [", spec[["repo"]], "](", urrl, ")") + } else if (spec[["type"]] == "gitlab") { + urrl <- paste0("https://gitlab.com/", spec[["repo"]]) + paste0(" [", spec[["repo"]], "](", urrl, ")") + } else { + repository + } + } else { + repository + } + } + ) + return(register_table) +} render_register_md <- function(list_register_tables, md_columns_widths) { - template_path <- system.file("extdata", "template_register.md", package = "codecheck") - template_content <- load_template_file(template_path) + template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") # Looping over the list of register tables and creating a md file for each for (register_table_name in names(list_register_tables)) { + markdown_table <- load_markdown_table_template(template_path) register_table <- list_register_tables[[register_table_name]] - - markdown_table <- adjust_markdown_title(template_content, register_table_name) + + register_table <- add_repository_links_md(register_table) # Fill in the content markdown_content <- capture.output(kable(register_table, format = "markdown")) + + markdown_table <- adjust_markdown_title(markdown_table, register_table_name) markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) - # Adding column width + # Adjusting the column widths markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) - markdown_table[7] <- md_columns_widths - # Writing the output - output_file_path <- determine_output_directory(register_table_name) - # Creating the directory if it does not exist - if (!dir.exists(output_file_path)) { - dir.create(output_file_path, recursive = TRUE, showWarnings = TRUE) + alignment_line_index <- grep("^\\|:---", markdown_table) + markdown_table[alignment_line_index] <- md_columns_widths + + # Determining the directory and saving the file + output_dir <- determine_output_directory(register_table_name) + if (!dir.exists(output_dir)) { + dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } - output_file_path <- paste(output_file_path, "/register.md", sep = "") + output_file_path <- paste(output_dir, "/register.md", sep = "") writeLines(markdown_table, output_file_path) } @@ -76,71 +144,48 @@ render_register_md <- function(list_register_tables, md_columns_widths) { render_register_html <- function(list_register_tables, md_columns_widths) { - template_path <- system.file("extdata", "template_register.md", package = "codecheck") - template_content <- load_template_file(template_path) + template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") # Loop over each register table for (register_table_name in names(list_register_tables)) { + markdown_table <- load_markdown_table_template(template_path) register_table <- list_register_tables[[register_table_name]] - - # Adjust the title in the markdown template - markdown_table <- adjust_markdown_title(template_content, register_table_name) - + # Add icons to the Repository column for HTML output, use a copy of the register.md - register_table$Repository <- sapply( - X = register_table$Repository, - FUN = function(repository) { - spec <- parse_repository_spec(repository) - if (!any(is.na(spec))) { - urrl <- "#" - if (spec[["type"]] == "github") { - urrl <- paste0("https://github.com/", spec[["repo"]]) - return(paste0(" [", spec[["repo"]], "](", urrl, ")")) - } else if (spec[["type"]] == "osf") { - urrl <- paste0("https://osf.io/", spec[["repo"]]) - return(paste0(" [", spec[["repo"]], "](", urrl, ")")) - } else if (spec[["type"]] == "gitlab") { - urrl <- paste0("https://gitlab.com/", spec[["repo"]]) - return(paste0(" [", spec[["repo"]], "](", urrl, ")")) - } else { - return(repository) - } - } else { - return(repository) - } - } - ) + register_table <- add_repository_links_html(register_table) # Capture the HTML output in a markdown table first markdown_content <- capture.output(knitr::kable(register_table, format = "markdown")) + + markdown_table <- adjust_markdown_title(markdown_table, register_table_name) markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) # Adjust column width markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) - markdown_table[7] <- md_columns_widths + alignment_line_index <- grep("^\\|:---", markdown_table) + markdown_table[alignment_line_index] <- md_columns_widths # Determine the output path - output_file_path <- determine_output_directory(register_table_name, "html") - output_file_path <- paste(output_file_path, "/index.html", sep = "") + output_dir <- determine_output_directory(register_table_name) # Create the directory if it does not exist - if (!dir.exists(dirname(output_file_path))) { - dir.create(dirname(output_file_path), recursive = TRUE, showWarnings = TRUE) + if (!dir.exists(dirname(output_dir))) { + dir.create(dirname(output_dir), recursive = TRUE, showWarnings = TRUE) } - + # Save the modified markdown to a temporary file + capture.output(kable(register_table, format = "markdown"), file = "docs/test_markdown.md") + temp_md_file <- tempfile(fileext = ".md") writeLines(markdown_table, temp_md_file) # Render HTML from markdown rmarkdown::render( input = temp_md_file, - output_file = output_file_path, + output_file = "index.html", + output_dir = output_dir, output_yaml = "html_document.yml" ) - - # Optionally remove the temporary markdown file - file.remove(temp_md_file) } } From e68e9eec23e9ae1d5e0cada255fea06aaa005701 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Thu, 16 May 2024 14:48:18 +0200 Subject: [PATCH 08/36] render html is working without errors now --- R/utils_render_register.R | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 23fe111..09b216b 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -135,6 +135,29 @@ render_register_md <- function(list_register_tables, md_columns_widths) { } } +#' Generates a html_document.yml with the full paths to the index header, prefix +#' and postfix.html files. This is necessary to retrieve the correct .html files +#' when generating the htmls from the sorted register markdown files which exist +#' inside subdirectories + +generate_html_document_yml <- function() { + working_dir <- getwd() + + yaml_content <- sprintf( + "html_document: + includes: + in_header: '%s/docs/index_header.html' + before_body: '%s/docs/index_prefix.html' + after_body: '%s/docs/index_postfix.html' + mathjax: null + highlight: null + self_contained: false + lib_dir: libs", + working_dir, working_dir, working_dir + ) + writeLines(yaml_content, "docs/html_document.yml") +} + #' Function for rendering the register html file. #' The html file is rendered from the markdown file. #' @@ -145,6 +168,7 @@ render_register_md <- function(list_register_tables, md_columns_widths) { render_register_html <- function(list_register_tables, md_columns_widths) { template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") + generate_html_document_yml() # Loop over each register table for (register_table_name in names(list_register_tables)) { @@ -174,18 +198,19 @@ render_register_html <- function(list_register_tables, md_columns_widths) { } # Save the modified markdown to a temporary file - capture.output(kable(register_table, format = "markdown"), file = "docs/test_markdown.md") - - temp_md_file <- tempfile(fileext = ".md") - writeLines(markdown_table, temp_md_file) + temp_file_path <- paste0(output_dir, "/temp-file.md") + writeLines(markdown_table, temp_file_path) + + yaml_path <- normalizePath(file.path(getwd(), "docs/html_document.yml")) # Render HTML from markdown rmarkdown::render( - input = temp_md_file, + input = temp_file_path, output_file = "index.html", output_dir = output_dir, - output_yaml = "html_document.yml" + output_yaml = yaml_path ) + file.remove(temp_file_path) } } From 2ed32c41ab0ad35c4dc15046eaa47dbc2ef8a8d1 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Thu, 16 May 2024 15:17:39 +0200 Subject: [PATCH 09/36] render_register_json handles multiple register tables --- R/register.R | 2 +- R/utils_render_register.R | 158 +++++++++++++++++++++----------------- 2 files changed, 90 insertions(+), 70 deletions(-) diff --git a/R/register.R b/R/register.R index a262665..2031432 100644 --- a/R/register.R +++ b/R/register.R @@ -39,7 +39,7 @@ register_render <- function(register = read.csv("register.csv", as.is = TRUE), if ("md" %in% outputs) render_register_md(list_register_tables, md_columns_widths) if ("html" %in% outputs) render_register_html(list_register_tables, md_columns_widths) - if ("json" %in% outputs) render_register_json(register_table, register) + if ("json" %in% outputs) render_register_json(list_register_tables) return(register_table) } diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 09b216b..cbe9a18 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -12,7 +12,7 @@ adjust_markdown_title <- function(markdown_table, register_table_name){ if (grepl("venue", register_table_name)){ venue_name <- sub("^venue", "", register_table_name) - title_addition <- paste("for", venue_name, "") + title_addition <- paste0("for", venue_name) } markdown_table <- gsub("\\$title_addition\\$", title_addition, markdown_table) @@ -102,6 +102,31 @@ add_repository_links_html <- function(register_table) { ) return(register_table) } + +#' Function for adding repository links to each report in the register table. +#' +#' @param register_table The register table +#' @return register_table + +add_repository_links_json <- function(register_table) { + register_table$`Repository Link` <- sapply( + X = register$Repository, + FUN = function(repository) { + spec <- parse_repository_spec(repository) + if (spec[["type"]] == "github") { + paste0("https://github.com/", spec[["repo"]]) + } else if (spec[["type"]] == "osf") { + paste0("https://osf.io/", spec[["repo"]]) + } else if (spec[["type"]] == "gitlab") { + paste0("https://gitlab.com/", spec[["repo"]]) + } else { + repository + } + } + ) + return(register_table) +} + render_register_md <- function(list_register_tables, md_columns_widths) { template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") @@ -129,7 +154,7 @@ render_register_md <- function(list_register_tables, md_columns_widths) { if (!dir.exists(output_dir)) { dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } - output_file_path <- paste(output_dir, "/register.md", sep = "") + output_file_path <- paste0(output_dir, "/register.md") writeLines(markdown_table, output_file_path) } @@ -220,80 +245,75 @@ render_register_html <- function(list_register_tables, md_columns_widths) { #' @param register The register from the register.csv file #' @return None -render_register_json <- function(register_table, register) { - # Get paper titles and references - titles <- c() - references <- c() +render_register_json <- function(list_register_tables, register) { + for (register_table_name in names(list_register_tables)) { + register_table <- list_register_tables[[register_table_name]] + + # Get paper titles and references + titles <- c() + references <- c() - for (i in seq_len(nrow(register))) { - config_yml <- get_codecheck_yml(register[i, ]$Repo) + for (i in seq_len(nrow(register_table))) { + config_yml <- get_codecheck_yml(register_table[i, ]$Repo) - title <- NA - reference <- NA - if (!is.null(config_yml)) { - title <- config_yml$paper$title - reference <- config_yml$paper$reference + title <- NA + reference <- NA + if (!is.null(config_yml)) { + title <- config_yml$paper$title + reference <- config_yml$paper$reference + } + + titles <- c(titles, title) + references <- c(references, reference) } - titles <- c(titles, title) - references <- c(references, reference) - } + register_table$Title <- stringr::str_trim(titles) + register_table$`Paper reference` <- stringr::str_trim(references) + register_table$`Repository Link` <- add_repository_links_json(register_table) - register_table$Title <- stringr::str_trim(titles) - register_table$`Paper reference` <- stringr::str_trim(references) - register_table$`Repository Link` <- sapply( - X = register$Repository, - FUN = function(repository) { - spec <- parse_repository_spec(repository) - if (spec[["type"]] == "github") { - paste0("https://github.com/", spec[["repo"]]) - } else if (spec[["type"]] == "osf") { - paste0("https://osf.io/", spec[["repo"]]) - } else if (spec[["type"]] == "gitlab") { - paste0("https://gitlab.com/", spec[["repo"]]) - } else { - repository - } + output_dir <- determine_output_directory(register_table_name) + if (!dir.exists(output_dir)) { + dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } - ) - jsonlite::write_json( - register_table[, c( - "Certificate", - "Repository Link", - "Type", - "Report", - "Title", - "Paper reference", - "Check date" - )], - path = "docs/register.json", - pretty = TRUE - ) + jsonlite::write_json( + register_table[, c( + "Certificate", + "Repository Link", + "Type", + "Report", + "Title", + "Paper reference", + "Check date" + )], + path = paste0(output_dir, "/register.json"), + pretty = TRUE + ) - jsonlite::write_json( - utils::tail(register_table, 10)[, c( - "Certificate", - "Repository Link", - "Type", - "Report", - "Title", - "Paper reference", - "Check date" - )], - path = "docs/featured.json", - pretty = TRUE - ) + jsonlite::write_json( + utils::tail(register_table, 10)[, c( + "Certificate", + "Repository Link", + "Type", + "Report", + "Title", + "Paper reference", + "Check date" + )], + path = paste0(output_dir, "/featured.json"), + pretty = TRUE + ) - jsonlite::write_json( - list( - source = "https://codecheck.org.uk/register/register.json", - cert_count = nrow(register_table) - # TODO count conferences, preprints, - # journals, etc. - ), - auto_unbox = TRUE, - path = "docs/stats.json", - pretty = TRUE - ) + jsonlite::write_json( + list( + source = "https://codecheck.org.uk/register/register.json", + cert_count = nrow(register_table) + # TODO count conferences, preprints, + # journals, etc. + ), + auto_unbox = TRUE, + path = paste0(output_dir, "/stats.json"), + pretty = TRUE + ) + } } From c2f386bb9c42a68ba4dabdd7e01cb1be67799a82 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 17:49:24 +0200 Subject: [PATCH 10/36] render_register_json is now working --- R/utils_render_register.R | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index cbe9a18..2800f40 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -110,7 +110,7 @@ add_repository_links_html <- function(register_table) { add_repository_links_json <- function(register_table) { register_table$`Repository Link` <- sapply( - X = register$Repository, + X = register_table$Repository, FUN = function(repository) { spec <- parse_repository_spec(repository) if (spec[["type"]] == "github") { @@ -248,13 +248,13 @@ render_register_html <- function(list_register_tables, md_columns_widths) { render_register_json <- function(list_register_tables, register) { for (register_table_name in names(list_register_tables)) { register_table <- list_register_tables[[register_table_name]] + register_table$`Repository Link` <- add_repository_links_json(register_table) # Get paper titles and references titles <- c() references <- c() - for (i in seq_len(nrow(register_table))) { - config_yml <- get_codecheck_yml(register_table[i, ]$Repo) + config_yml <- get_codecheck_yml(register_table[i, ]$Repository) title <- NA reference <- NA @@ -266,10 +266,8 @@ render_register_json <- function(list_register_tables, register) { titles <- c(titles, title) references <- c(references, reference) } - register_table$Title <- stringr::str_trim(titles) register_table$`Paper reference` <- stringr::str_trim(references) - register_table$`Repository Link` <- add_repository_links_json(register_table) output_dir <- determine_output_directory(register_table_name) if (!dir.exists(output_dir)) { From 51cae782ad099136af3430c3f2e9ac35a2cfca6f Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 18:40:05 +0200 Subject: [PATCH 11/36] fix mistake in adding repo links json --- R/utils_render_register.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 2800f40..ef1543a 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -248,7 +248,7 @@ render_register_html <- function(list_register_tables, md_columns_widths) { render_register_json <- function(list_register_tables, register) { for (register_table_name in names(list_register_tables)) { register_table <- list_register_tables[[register_table_name]] - register_table$`Repository Link` <- add_repository_links_json(register_table) + register_table <- add_repository_links_json(register_table) # Get paper titles and references titles <- c() From 2748c8f2f39096601e77682d0a09da599f1b3568 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 19:09:06 +0200 Subject: [PATCH 12/36] adjust and add docstrings --- R/utils_preprocess_register.R | 14 +++----- R/utils_register_check.R | 2 -- R/utils_register_sort.R | 5 +++ R/utils_render_register.R | 61 ++++++++++++++++++++++------------- 4 files changed, 49 insertions(+), 33 deletions(-) diff --git a/R/utils_preprocess_register.R b/R/utils_preprocess_register.R index 322f52c..80eb414 100644 --- a/R/utils_preprocess_register.R +++ b/R/utils_preprocess_register.R @@ -11,12 +11,11 @@ register_clear_cache <- function() { unlink(path, recursive = TRUE) } -#' Function for adding clickable links to the repor for each entry in the register table. +#' Function for adding clickable links to the report for each entry in the register table. #' #' @param register_table The register table #' @param register The register from the register.csv file -#' @return register_table - +#' @return The adjusted register table add_report_links <- function(register_table, register) { reports <- c() @@ -39,8 +38,7 @@ add_report_links <- function(register_table, register) { #' #' @param register_table The register table #' @param register The register from the register.csv file -#' @return register_table - +#' @return The adjusted register table add_issue_number_links <- function(register_table, register) { register_table$Issue <- sapply( X = register$Issue, @@ -64,8 +62,7 @@ add_issue_number_links <- function(register_table, register) { #' #' @param register_table The register table #' @param register The register from the register.csv file -#' @return register_table - +#' @return The adjusted register table add_check_time <- function(register_table, register) { check_times <- c() @@ -89,8 +86,7 @@ add_check_time <- function(register_table, register) { #' Function for preprocessing the register to create and return the register_table. #' #' @param register_table The register table -#' @return register_table - +#' @return The preprocessed register table preprocess_register <- function(register) { register_table <- register register_table <- add_report_links(register_table, register) diff --git a/R/utils_register_check.R b/R/utils_register_check.R index 885d6cd..a96cd36 100644 --- a/R/utils_register_check.R +++ b/R/utils_register_check.R @@ -3,7 +3,6 @@ #' #' @param codecheck_yaml The codecheck yaml file #' @return None - check_certificate_id <- function(codecheck_yaml) { # Codecheck.yml found, proceeding to check certificate id if (!is.null(codecheck_yaml)) { @@ -30,7 +29,6 @@ check_certificate_id <- function(codecheck_yaml) { #' #' @param entry The codecheck entry #' @return None - check_issue_status <- function(entry) { if (!is.na(entry$Issue)) { # get the status and labels from an issue diff --git a/R/utils_register_sort.R b/R/utils_register_sort.R index 645c832..f47bc9a 100644 --- a/R/utils_register_sort.R +++ b/R/utils_register_sort.R @@ -1,3 +1,8 @@ +#' Function for creating a list of register tables that is sorted by venue. +#' The resulting list is of the form ["venue_{venue_name}": sorted_register_table] +#' +#' @param register_table The register table +#' @return A list of venue sorted register tables. create_list_venue_sorted_register_tables <- function(register_table) { # List of venues list_venues <- unique(register_table$Type) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index ef1543a..495a4f6 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -1,3 +1,7 @@ +#' Function to load the markdown table +#' +#' @param template_path The path to the markdown template +#' @return The markdown table template load_markdown_table_template <- function(template_path){ if (!file.exists(template_path)){ stop("No register table template found") @@ -7,6 +11,12 @@ load_markdown_table_template <- function(template_path){ return(markdown_table_template) } +#' Function to adjust the markdown title based on the specific register table name. +#' +#' @param markdown_table The markdown template where the title needs to be adjusted +#' @param register_table_name The name of the register table +#' +#' @return The modified markdown table adjust_markdown_title <- function(markdown_table, register_table_name){ title_addition <- "" @@ -19,8 +29,11 @@ adjust_markdown_title <- function(markdown_table, register_table_name){ return(markdown_table) } -# Helper function to determine output paths based on the table name -determine_output_directory <- function(register_table_name) { +#' Function to determine the appropriate output file directory based on the register table name. +#' +#' @param register_table_name The name of the register table +#' @return The path to the output file directory +determine_output_file_directory <- function(register_table_name) { if (grepl("venue", register_table_name)){ folder_venue_name <- sub("^venue", "", register_table_name) folder_venue_name <- trimws(folder_venue_name) # Removing trailing space @@ -31,11 +44,10 @@ determine_output_directory <- function(register_table_name) { } } -#' Function for adding repository links to each report in the register table. +#' Function for adding repository links in the register table for the creation of the markdown file. #' #' @param register_table The register table -#' @return register_table - +#' @return Register table with adjusted repository links add_repository_links_md <- function(register_table) { register_table$Repository <- sapply( X = register_table$Repository, @@ -71,11 +83,10 @@ add_repository_links_md <- function(register_table) { return(register_table) } -#' Function for adding repository links to each report in the register table. +#' Function for adding repository links in the register table for the creation of the html file. #' #' @param register_table The register table -#' @return register_table - +#' @return Register table with adjusted repository links add_repository_links_html <- function(register_table) { register_table$Repository <- sapply( X = register_table$Repository, @@ -103,11 +114,10 @@ add_repository_links_html <- function(register_table) { return(register_table) } -#' Function for adding repository links to each report in the register table. +#' Function for adding repository links in the register table for the creation of the json file. #' #' @param register_table The register table -#' @return register_table - +#' @return Register table with adjusted repository links add_repository_links_json <- function(register_table) { register_table$`Repository Link` <- sapply( X = register_table$Repository, @@ -127,6 +137,17 @@ add_repository_links_json <- function(register_table) { return(register_table) } +#' Render Markdown files for register tables. +#' +#' @param list_register_tables A list of register tables +#' @param md_columns_widths A string specifying the Markdown formatting for column widths. +#' +#' @return None +#' @importFrom kable kable +#' @importFrom gsub gsub +#' @importFrom dir.exists dir.exists +#' @importFrom dir.create dir.create +#' @importFrom writeLines writeLines render_register_md <- function(list_register_tables, md_columns_widths) { template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") @@ -150,7 +171,7 @@ render_register_md <- function(list_register_tables, md_columns_widths) { markdown_table[alignment_line_index] <- md_columns_widths # Determining the directory and saving the file - output_dir <- determine_output_directory(register_table_name) + output_dir <- determine_output_file_directory(register_table_name) if (!dir.exists(output_dir)) { dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } @@ -160,11 +181,10 @@ render_register_md <- function(list_register_tables, md_columns_widths) { } } -#' Generates a html_document.yml with the full paths to the index header, prefix -#' and postfix.html files. This is necessary to retrieve the correct .html files -#' when generating the htmls from the sorted register markdown files which exist -#' inside subdirectories - +#' Dynamically generates a html_document.yml with the full paths to the index header, prefix +#' and postfix.html files. +#' +#' @return None generate_html_document_yml <- function() { working_dir <- getwd() @@ -189,8 +209,6 @@ generate_html_document_yml <- function() { #' @param register_table The register table #' @param md_columns_widths The column widths for the markdown file #' @return None - - render_register_html <- function(list_register_tables, md_columns_widths) { template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") generate_html_document_yml() @@ -215,7 +233,7 @@ render_register_html <- function(list_register_tables, md_columns_widths) { markdown_table[alignment_line_index] <- md_columns_widths # Determine the output path - output_dir <- determine_output_directory(register_table_name) + output_dir <- determine_output_file_directory(register_table_name) # Create the directory if it does not exist if (!dir.exists(dirname(output_dir))) { @@ -244,7 +262,6 @@ render_register_html <- function(list_register_tables, md_columns_widths) { #' @param register_table The register table #' @param register The register from the register.csv file #' @return None - render_register_json <- function(list_register_tables, register) { for (register_table_name in names(list_register_tables)) { register_table <- list_register_tables[[register_table_name]] @@ -269,7 +286,7 @@ render_register_json <- function(list_register_tables, register) { register_table$Title <- stringr::str_trim(titles) register_table$`Paper reference` <- stringr::str_trim(references) - output_dir <- determine_output_directory(register_table_name) + output_dir <- determine_output_file_directory(register_table_name) if (!dir.exists(output_dir)) { dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } From 0bd7b47a715667e93586beaa1be232598ff232ce Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 21:48:41 +0200 Subject: [PATCH 13/36] Update function documentation --- DESCRIPTION | 2 +- NAMESPACE | 5 +++++ man/add_check_time.Rd | 19 +++++++++++++++++ man/add_issue_number_links.Rd | 19 +++++++++++++++++ man/add_report_links.Rd | 19 +++++++++++++++++ man/add_repository_links_html.Rd | 17 +++++++++++++++ man/add_repository_links_json.Rd | 17 +++++++++++++++ man/add_repository_links_md.Rd | 17 +++++++++++++++ man/adjust_markdown_title.Rd | 19 +++++++++++++++++ man/check_certificate_id.Rd | 19 +++++++++++++++++ man/check_issue_status.Rd | 19 +++++++++++++++++ ...reate_list_venue_sorted_register_tables.Rd | 19 +++++++++++++++++ man/determine_output_file_directory.Rd | 17 +++++++++++++++ man/generate_html_document_yml.Rd | 16 ++++++++++++++ man/load_markdown_table_template.Rd | 17 +++++++++++++++ man/preprocess_register.Rd | 17 +++++++++++++++ man/register_clear_cache.Rd | 2 +- man/register_render.Rd | 1 + man/render_register_html.Rd | 21 +++++++++++++++++++ man/render_register_json.Rd | 19 +++++++++++++++++ man/render_register_md.Rd | 19 +++++++++++++++++ 21 files changed, 318 insertions(+), 2 deletions(-) create mode 100644 man/add_check_time.Rd create mode 100644 man/add_issue_number_links.Rd create mode 100644 man/add_report_links.Rd create mode 100644 man/add_repository_links_html.Rd create mode 100644 man/add_repository_links_json.Rd create mode 100644 man/add_repository_links_md.Rd create mode 100644 man/adjust_markdown_title.Rd create mode 100644 man/check_certificate_id.Rd create mode 100644 man/check_issue_status.Rd create mode 100644 man/create_list_venue_sorted_register_tables.Rd create mode 100644 man/determine_output_file_directory.Rd create mode 100644 man/generate_html_document_yml.Rd create mode 100644 man/load_markdown_table_template.Rd create mode 100644 man/preprocess_register.Rd create mode 100644 man/render_register_html.Rd create mode 100644 man/render_register_json.Rd create mode 100644 man/render_register_md.Rd diff --git a/DESCRIPTION b/DESCRIPTION index a540a8b..989f566 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -35,7 +35,7 @@ Imports: zen4R Encoding: UTF-8 LazyData: true -RoxygenNote: 7.2.1 +RoxygenNote: 7.3.1 VignetteBuilder: knitr Suggests: tinytest, diff --git a/NAMESPACE b/NAMESPACE index 3b57eda..85e7eb7 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -19,11 +19,15 @@ export(validate_codecheck_yml) import(jsonlite) importFrom(R.cache,addMemoization) importFrom(R.cache,getCacheRootPath) +importFrom(dir.create,dir.create) +importFrom(dir.exists,dir.exists) importFrom(gh,gh) +importFrom(gsub,gsub) importFrom(httr,GET) importFrom(httr,HEAD) importFrom(httr,content) importFrom(httr,status_code) +importFrom(kable,kable) importFrom(knitr,kable) importFrom(osfr,osf_download) importFrom(osfr,osf_ls_files) @@ -36,6 +40,7 @@ importFrom(stringr,str_replace_all) importFrom(utils,capture.output) importFrom(utils,read.csv) importFrom(utils,tail) +importFrom(writeLines,writeLines) importFrom(xtable,xtable) importFrom(yaml,read_yaml) importFrom(yaml,yaml.load) diff --git a/man/add_check_time.Rd b/man/add_check_time.Rd new file mode 100644 index 0000000..63bd224 --- /dev/null +++ b/man/add_check_time.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_preprocess_register.R +\name{add_check_time} +\alias{add_check_time} +\title{Function for adding check time to each report in the register table.} +\usage{ +add_check_time(register_table, register) +} +\arguments{ +\item{register_table}{The register table} + +\item{register}{The register from the register.csv file} +} +\value{ +The adjusted register table +} +\description{ +Function for adding check time to each report in the register table. +} diff --git a/man/add_issue_number_links.Rd b/man/add_issue_number_links.Rd new file mode 100644 index 0000000..c7ebe51 --- /dev/null +++ b/man/add_issue_number_links.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_preprocess_register.R +\name{add_issue_number_links} +\alias{add_issue_number_links} +\title{Function for adding clickable links to the issue number of each report in the register table.} +\usage{ +add_issue_number_links(register_table, register) +} +\arguments{ +\item{register_table}{The register table} + +\item{register}{The register from the register.csv file} +} +\value{ +The adjusted register table +} +\description{ +Function for adding clickable links to the issue number of each report in the register table. +} diff --git a/man/add_report_links.Rd b/man/add_report_links.Rd new file mode 100644 index 0000000..2cdb778 --- /dev/null +++ b/man/add_report_links.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_preprocess_register.R +\name{add_report_links} +\alias{add_report_links} +\title{Function for adding clickable links to the report for each entry in the register table.} +\usage{ +add_report_links(register_table, register) +} +\arguments{ +\item{register_table}{The register table} + +\item{register}{The register from the register.csv file} +} +\value{ +The adjusted register table +} +\description{ +Function for adding clickable links to the report for each entry in the register table. +} diff --git a/man/add_repository_links_html.Rd b/man/add_repository_links_html.Rd new file mode 100644 index 0000000..8e3780a --- /dev/null +++ b/man/add_repository_links_html.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{add_repository_links_html} +\alias{add_repository_links_html} +\title{Function for adding repository links in the register table for the creation of the html file.} +\usage{ +add_repository_links_html(register_table) +} +\arguments{ +\item{register_table}{The register table} +} +\value{ +Register table with adjusted repository links +} +\description{ +Function for adding repository links in the register table for the creation of the html file. +} diff --git a/man/add_repository_links_json.Rd b/man/add_repository_links_json.Rd new file mode 100644 index 0000000..f92adbd --- /dev/null +++ b/man/add_repository_links_json.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{add_repository_links_json} +\alias{add_repository_links_json} +\title{Function for adding repository links in the register table for the creation of the json file.} +\usage{ +add_repository_links_json(register_table) +} +\arguments{ +\item{register_table}{The register table} +} +\value{ +Register table with adjusted repository links +} +\description{ +Function for adding repository links in the register table for the creation of the json file. +} diff --git a/man/add_repository_links_md.Rd b/man/add_repository_links_md.Rd new file mode 100644 index 0000000..b495b43 --- /dev/null +++ b/man/add_repository_links_md.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{add_repository_links_md} +\alias{add_repository_links_md} +\title{Function for adding repository links in the register table for the creation of the markdown file.} +\usage{ +add_repository_links_md(register_table) +} +\arguments{ +\item{register_table}{The register table} +} +\value{ +Register table with adjusted repository links +} +\description{ +Function for adding repository links in the register table for the creation of the markdown file. +} diff --git a/man/adjust_markdown_title.Rd b/man/adjust_markdown_title.Rd new file mode 100644 index 0000000..2ec84e1 --- /dev/null +++ b/man/adjust_markdown_title.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{adjust_markdown_title} +\alias{adjust_markdown_title} +\title{Function to adjust the markdown title based on the specific register table name.} +\usage{ +adjust_markdown_title(markdown_table, register_table_name) +} +\arguments{ +\item{markdown_table}{The markdown template where the title needs to be adjusted} + +\item{register_table_name}{The name of the register table} +} +\value{ +The modified markdown table +} +\description{ +Function to adjust the markdown title based on the specific register table name. +} diff --git a/man/check_certificate_id.Rd b/man/check_certificate_id.Rd new file mode 100644 index 0000000..23b77d9 --- /dev/null +++ b/man/check_certificate_id.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_register_check.R +\name{check_certificate_id} +\alias{check_certificate_id} +\title{Function for checking ceritificate id if there is a codecheck_yaml. +If there is a mismatch a stop is sent. Else a warning is thrown.} +\usage{ +check_certificate_id(codecheck_yaml) +} +\arguments{ +\item{codecheck_yaml}{The codecheck yaml file} +} +\value{ +None +} +\description{ +Function for checking ceritificate id if there is a codecheck_yaml. +If there is a mismatch a stop is sent. Else a warning is thrown. +} diff --git a/man/check_issue_status.Rd b/man/check_issue_status.Rd new file mode 100644 index 0000000..6c1e2fe --- /dev/null +++ b/man/check_issue_status.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_register_check.R +\name{check_issue_status} +\alias{check_issue_status} +\title{Function issue status. If the issue is not closed a warning is thrown +stating that the issue is still open.} +\usage{ +check_issue_status(entry) +} +\arguments{ +\item{entry}{The codecheck entry} +} +\value{ +None +} +\description{ +Function issue status. If the issue is not closed a warning is thrown +stating that the issue is still open. +} diff --git a/man/create_list_venue_sorted_register_tables.Rd b/man/create_list_venue_sorted_register_tables.Rd new file mode 100644 index 0000000..75fa435 --- /dev/null +++ b/man/create_list_venue_sorted_register_tables.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_register_sort.R +\name{create_list_venue_sorted_register_tables} +\alias{create_list_venue_sorted_register_tables} +\title{Function for creating a list of register tables that is sorted by venue. +The resulting list is of the form ["venue_{venue_name}": sorted_register_table]} +\usage{ +create_list_venue_sorted_register_tables(register_table) +} +\arguments{ +\item{register_table}{The register table} +} +\value{ +A list of venue sorted register tables. +} +\description{ +Function for creating a list of register tables that is sorted by venue. +The resulting list is of the form ["venue_{venue_name}": sorted_register_table] +} diff --git a/man/determine_output_file_directory.Rd b/man/determine_output_file_directory.Rd new file mode 100644 index 0000000..bc626ec --- /dev/null +++ b/man/determine_output_file_directory.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{determine_output_file_directory} +\alias{determine_output_file_directory} +\title{Function to determine the appropriate output file directory based on the register table name.} +\usage{ +determine_output_file_directory(register_table_name) +} +\arguments{ +\item{register_table_name}{The name of the register table} +} +\value{ +The path to the output file directory +} +\description{ +Function to determine the appropriate output file directory based on the register table name. +} diff --git a/man/generate_html_document_yml.Rd b/man/generate_html_document_yml.Rd new file mode 100644 index 0000000..60a3e5f --- /dev/null +++ b/man/generate_html_document_yml.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{generate_html_document_yml} +\alias{generate_html_document_yml} +\title{Dynamically generates a html_document.yml with the full paths to the index header, prefix +and postfix.html files.} +\usage{ +generate_html_document_yml() +} +\value{ +None +} +\description{ +Dynamically generates a html_document.yml with the full paths to the index header, prefix +and postfix.html files. +} diff --git a/man/load_markdown_table_template.Rd b/man/load_markdown_table_template.Rd new file mode 100644 index 0000000..671108e --- /dev/null +++ b/man/load_markdown_table_template.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{load_markdown_table_template} +\alias{load_markdown_table_template} +\title{Function to load the markdown table} +\usage{ +load_markdown_table_template(template_path) +} +\arguments{ +\item{template_path}{The path to the markdown template} +} +\value{ +The markdown table template +} +\description{ +Function to load the markdown table +} diff --git a/man/preprocess_register.Rd b/man/preprocess_register.Rd new file mode 100644 index 0000000..499951e --- /dev/null +++ b/man/preprocess_register.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_preprocess_register.R +\name{preprocess_register} +\alias{preprocess_register} +\title{Function for preprocessing the register to create and return the register_table.} +\usage{ +preprocess_register(register) +} +\arguments{ +\item{register_table}{The register table} +} +\value{ +The preprocessed register table +} +\description{ +Function for preprocessing the register to create and return the register_table. +} diff --git a/man/register_clear_cache.Rd b/man/register_clear_cache.Rd index c12b07f..6124e7f 100644 --- a/man/register_clear_cache.Rd +++ b/man/register_clear_cache.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/register.R +% Please edit documentation in R/utils_preprocess_register.R \name{register_clear_cache} \alias{register_clear_cache} \title{Function for clearing the register cache} diff --git a/man/register_render.Rd b/man/register_render.Rd index a460c74..2eb6f96 100644 --- a/man/register_render.Rd +++ b/man/register_render.Rd @@ -6,6 +6,7 @@ \usage{ register_render( register = read.csv("register.csv", as.is = TRUE), + sort_by = c("venue"), outputs = c("html", "md", "json") ) } diff --git a/man/render_register_html.Rd b/man/render_register_html.Rd new file mode 100644 index 0000000..5463ad8 --- /dev/null +++ b/man/render_register_html.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{render_register_html} +\alias{render_register_html} +\title{Function for rendering the register html file. +The html file is rendered from the markdown file.} +\usage{ +render_register_html(list_register_tables, md_columns_widths) +} +\arguments{ +\item{md_columns_widths}{The column widths for the markdown file} + +\item{register_table}{The register table} +} +\value{ +None +} +\description{ +Function for rendering the register html file. +The html file is rendered from the markdown file. +} diff --git a/man/render_register_json.Rd b/man/render_register_json.Rd new file mode 100644 index 0000000..84161ce --- /dev/null +++ b/man/render_register_json.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{render_register_json} +\alias{render_register_json} +\title{Function for rendering the register json file.} +\usage{ +render_register_json(list_register_tables, register) +} +\arguments{ +\item{register}{The register from the register.csv file} + +\item{register_table}{The register table} +} +\value{ +None +} +\description{ +Function for rendering the register json file. +} diff --git a/man/render_register_md.Rd b/man/render_register_md.Rd new file mode 100644 index 0000000..230f260 --- /dev/null +++ b/man/render_register_md.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register.R +\name{render_register_md} +\alias{render_register_md} +\title{Render Markdown files for register tables.} +\usage{ +render_register_md(list_register_tables, md_columns_widths) +} +\arguments{ +\item{list_register_tables}{A list of register tables} + +\item{md_columns_widths}{A string specifying the Markdown formatting for column widths.} +} +\value{ +None +} +\description{ +Render Markdown files for register tables. +} From b9903d95bdc0479b2928b225ca29c37d7a4e4a2f Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 21:56:05 +0200 Subject: [PATCH 14/36] remove unnecessary imports in NAMESPACE --- NAMESPACE | 3 --- 1 file changed, 3 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 85e7eb7..29b76fc 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -19,8 +19,6 @@ export(validate_codecheck_yml) import(jsonlite) importFrom(R.cache,addMemoization) importFrom(R.cache,getCacheRootPath) -importFrom(dir.create,dir.create) -importFrom(dir.exists,dir.exists) importFrom(gh,gh) importFrom(gsub,gsub) importFrom(httr,GET) @@ -40,7 +38,6 @@ importFrom(stringr,str_replace_all) importFrom(utils,capture.output) importFrom(utils,read.csv) importFrom(utils,tail) -importFrom(writeLines,writeLines) importFrom(xtable,xtable) importFrom(yaml,read_yaml) importFrom(yaml,yaml.load) From 741d1eb51bec908597cd18c568c614fce5db775c Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 21:59:39 +0200 Subject: [PATCH 15/36] remove gsub from NAMESPACE --- NAMESPACE | 1 - 1 file changed, 1 deletion(-) diff --git a/NAMESPACE b/NAMESPACE index 29b76fc..0fdd5ce 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -20,7 +20,6 @@ import(jsonlite) importFrom(R.cache,addMemoization) importFrom(R.cache,getCacheRootPath) importFrom(gh,gh) -importFrom(gsub,gsub) importFrom(httr,GET) importFrom(httr,HEAD) importFrom(httr,content) From 21584b819ef13bc339eae62bc2d97430209ff6f2 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 22:01:54 +0200 Subject: [PATCH 16/36] Correct kable import in NAMESPACE --- NAMESPACE | 1 - 1 file changed, 1 deletion(-) diff --git a/NAMESPACE b/NAMESPACE index 0fdd5ce..3b57eda 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -24,7 +24,6 @@ importFrom(httr,GET) importFrom(httr,HEAD) importFrom(httr,content) importFrom(httr,status_code) -importFrom(kable,kable) importFrom(knitr,kable) importFrom(osfr,osf_download) importFrom(osfr,osf_ls_files) From 8136e7e9519dbf58a86b3750798833cf63787264 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 22:08:17 +0200 Subject: [PATCH 17/36] Update register_sort_venue documentation --- R/utils_register_sort.R | 3 ++- man/create_list_venue_sorted_register_tables.Rd | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/R/utils_register_sort.R b/R/utils_register_sort.R index f47bc9a..303733b 100644 --- a/R/utils_register_sort.R +++ b/R/utils_register_sort.R @@ -1,5 +1,6 @@ #' Function for creating a list of register tables that is sorted by venue. -#' The resulting list is of the form ["venue_{venue_name}": sorted_register_table] +#' Each entry in the resulting list uses a key that combines 'venue_' with the venue name, +#' and maps to a corresponding sorted register table. #' #' @param register_table The register table #' @return A list of venue sorted register tables. diff --git a/man/create_list_venue_sorted_register_tables.Rd b/man/create_list_venue_sorted_register_tables.Rd index 75fa435..1820983 100644 --- a/man/create_list_venue_sorted_register_tables.Rd +++ b/man/create_list_venue_sorted_register_tables.Rd @@ -3,7 +3,8 @@ \name{create_list_venue_sorted_register_tables} \alias{create_list_venue_sorted_register_tables} \title{Function for creating a list of register tables that is sorted by venue. -The resulting list is of the form ["venue_{venue_name}": sorted_register_table]} +Each entry in the resulting list uses a key that combines 'venue_' with the venue name, +and maps to a corresponding sorted register table.} \usage{ create_list_venue_sorted_register_tables(register_table) } @@ -15,5 +16,6 @@ A list of venue sorted register tables. } \description{ Function for creating a list of register tables that is sorted by venue. -The resulting list is of the form ["venue_{venue_name}": sorted_register_table] +Each entry in the resulting list uses a key that combines 'venue_' with the venue name, +and maps to a corresponding sorted register table. } From cd5985852f33153bcd40c0dc938628855fe6e3a4 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Mon, 20 May 2024 22:14:11 +0200 Subject: [PATCH 18/36] Add argument to check_certificate_id --- R/register.R | 2 +- R/utils_register_check.R | 3 ++- man/check_certificate_id.Rd | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/R/register.R b/R/register.R index 2031432..9046e74 100644 --- a/R/register.R +++ b/R/register.R @@ -70,7 +70,7 @@ register_check <- function(register = read.csv("register.csv", as.is = TRUE), # check certificate IDs if there is a codecheck.yml codecheck_yaml <- get_codecheck_yml(entry$Repository) - check_certificate_id(codecheck_yaml) + check_certificate_id(entry, codecheck_yaml) check_issue_status(entry) cat("Completed checking registry entry", toString(register[i, "Certificate"]), "\n") } diff --git a/R/utils_register_check.R b/R/utils_register_check.R index a96cd36..cc5de4d 100644 --- a/R/utils_register_check.R +++ b/R/utils_register_check.R @@ -2,8 +2,9 @@ #' If there is a mismatch a stop is sent. Else a warning is thrown. #' #' @param codecheck_yaml The codecheck yaml file +#' @param entry The registry entry #' @return None -check_certificate_id <- function(codecheck_yaml) { +check_certificate_id <- function(entry, codecheck_yaml) { # Codecheck.yml found, proceeding to check certificate id if (!is.null(codecheck_yaml)) { # validate config file diff --git a/man/check_certificate_id.Rd b/man/check_certificate_id.Rd index 23b77d9..0089e99 100644 --- a/man/check_certificate_id.Rd +++ b/man/check_certificate_id.Rd @@ -5,9 +5,11 @@ \title{Function for checking ceritificate id if there is a codecheck_yaml. If there is a mismatch a stop is sent. Else a warning is thrown.} \usage{ -check_certificate_id(codecheck_yaml) +check_certificate_id(entry, codecheck_yaml) } \arguments{ +\item{entry}{The registry entry} + \item{codecheck_yaml}{The codecheck yaml file} } \value{ From 06a9310fffde5f635df9830904bbbbb9841e2b65 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Tue, 21 May 2024 13:43:05 +0200 Subject: [PATCH 19/36] Add comment to html_document.yml file --- R/utils_render_register.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 495a4f6..2b61821 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -187,9 +187,9 @@ render_register_md <- function(list_register_tables, md_columns_widths) { #' @return None generate_html_document_yml <- function() { working_dir <- getwd() - yaml_content <- sprintf( - "html_document: + "# DO NOT EDIT THIS FILE MANUALLY + html_document: includes: in_header: '%s/docs/index_header.html' before_body: '%s/docs/index_prefix.html' From 9917bc90f78a0a3c00baa12b3e55fe63f3ab1213 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Tue, 21 May 2024 13:43:28 +0200 Subject: [PATCH 20/36] Bump version --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 989f566..f49e365 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: codecheck Title: Helper Functions for CODECHECK Project -Version: 0.1.0.9006 +Version: 0.2.0 Authors@R: c(person(given = "Stephen", family = "Eglen", From 5c4f3b5aa70e0fb160435586cb0873be01fab115 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Tue, 21 May 2024 13:55:06 +0200 Subject: [PATCH 21/36] Correct preprocess_register docstring --- R/utils_preprocess_register.R | 5 ++--- man/preprocess_register.Rd | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/R/utils_preprocess_register.R b/R/utils_preprocess_register.R index 80eb414..6c6a79e 100644 --- a/R/utils_preprocess_register.R +++ b/R/utils_preprocess_register.R @@ -83,9 +83,8 @@ add_check_time <- function(register_table, register) { return(register_table) } -#' Function for preprocessing the register to create and return the register_table. -#' -#' @param register_table The register table +#' Function for preprocessing the register to create and return the preprocessed register table. +#' @param register The register #' @return The preprocessed register table preprocess_register <- function(register) { register_table <- register diff --git a/man/preprocess_register.Rd b/man/preprocess_register.Rd index 499951e..94ab503 100644 --- a/man/preprocess_register.Rd +++ b/man/preprocess_register.Rd @@ -2,16 +2,16 @@ % Please edit documentation in R/utils_preprocess_register.R \name{preprocess_register} \alias{preprocess_register} -\title{Function for preprocessing the register to create and return the register_table.} +\title{Function for preprocessing the register to create and return the preprocessed register table.} \usage{ preprocess_register(register) } \arguments{ -\item{register_table}{The register table} +\item{register}{The register} } \value{ The preprocessed register table } \description{ -Function for preprocessing the register to create and return the register_table. +Function for preprocessing the register to create and return the preprocessed register table. } From cf7ad4fa22c80abbd7bbc07cb6cc6510a8740efa Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Tue, 21 May 2024 14:00:48 +0200 Subject: [PATCH 22/36] changed R github worflow to pass with warnings --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 4404041..e6cfee1 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -70,7 +70,7 @@ jobs: - name: Check env: _R_CHECK_CRAN_INCOMING_REMOTE_: false - run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check") + run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "error", check_dir = "check") shell: Rscript {0} - name: Upload check results From 5087ee8da51b1d922d6ed31b66090186a22e2660 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Tue, 21 May 2024 14:59:47 +0200 Subject: [PATCH 23/36] corrected folder structure --- R/utils_render_register.R | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/R/utils_render_register.R b/R/utils_render_register.R index 2b61821..0e34acc 100644 --- a/R/utils_render_register.R +++ b/R/utils_render_register.R @@ -35,10 +35,25 @@ adjust_markdown_title <- function(markdown_table, register_table_name){ #' @return The path to the output file directory determine_output_file_directory <- function(register_table_name) { if (grepl("venue", register_table_name)){ - folder_venue_name <- sub("^venue", "", register_table_name) - folder_venue_name <- trimws(folder_venue_name) # Removing trailing space - folder_venue_name <- gsub(" ", "_", gsub("[()]", "", folder_venue_name)) - return(paste0("docs/venues/", folder_venue_name)) + + # Removing the prefix "venue" + venue_name <- sub("^venue", "", register_table_name) + venue_name <- trimws(venue_name) # Removing trailing space + venue_name <- gsub(" ", "_", gsub("[()]", "", venue_name)) + + # Determining the subfolder name + list_subfolder_names <- c("community", "journal", "conference") + matches <- sapply(list_subfolder_names, grepl, x = register_table_name) + + if (any(matches)) { + subfolder_name <- names(matches)[which(matches)[1]] + # Remove the subfolder name and an underscore from the venue name + venue_name <- gsub(paste0(subfolder_name, "_"), "", venue_name) + } else { + stop(paste("Register does not fall into any of the following categories:", list_subfolder_names)) + } + + return(paste0("docs/venues/", subfolder_name, "/", venue_name)) } else { return(paste0("docs")) } @@ -234,8 +249,6 @@ render_register_html <- function(list_register_tables, md_columns_widths) { # Determine the output path output_dir <- determine_output_file_directory(register_table_name) - - # Create the directory if it does not exist if (!dir.exists(dirname(output_dir))) { dir.create(dirname(output_dir), recursive = TRUE, showWarnings = TRUE) } From fe726bc3dabbb1dd559d585dc8d0a33aeca3799e Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Fri, 24 May 2024 12:22:41 +0200 Subject: [PATCH 24/36] refactor everything --- R/register.R | 25 +- R/utils_create_filtered_register_csvs.R | 58 ++++ R/utils_register_sort.R | 49 ++-- R/utils_render_register.R | 347 ------------------------ R/utils_render_register_json.R | 107 ++++++++ R/utils_render_register_mds.R | 106 ++++++++ R/utils_render_reigster_html.r | 192 +++++++++++++ 7 files changed, 510 insertions(+), 374 deletions(-) create mode 100644 R/utils_create_filtered_register_csvs.R delete mode 100644 R/utils_render_register.R create mode 100644 R/utils_render_register_json.R create mode 100644 R/utils_render_register_mds.R create mode 100644 R/utils_render_reigster_html.r diff --git a/R/register.R b/R/register.R index 9046e74..d290e59 100644 --- a/R/register.R +++ b/R/register.R @@ -19,25 +19,28 @@ #' #' @export register_render <- function(register = read.csv("register.csv", as.is = TRUE), - sort_by = c("venue"), + filter_by = c("venue"), outputs = c("html", "md", "json")) { + + list_venue_categories <- c("community", "journal", "conference") + template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") + md_columns_widths <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" + register_table <- preprocess_register(register) + # Creating list of of register tables with indices being the filter types list_register_tables <- c() - list_register_tables[["original"]] <- register_table + list_register_tables[["none"]] <- list("original"= register_table) - # Sorting the tables - for (sort in sort_by) { - if (sort == "venue") { - list_venue_sorted_register_tables <- create_list_venue_sorted_register_tables(register_table) - list_register_tables <- c(list_register_tables, list_venue_sorted_register_tables) - } + if (length(filter_by)!=0){ + # Creating filtered register csvs + create_filtered_register_csvs(filter_by, register) + # Creating and adding filtered registered tables to list of tables + list_register_tables <- add_filtered_register_tables(list_register_tables, register_table, filter_by) } # Rendering files - md_columns_widths <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" - - if ("md" %in% outputs) render_register_md(list_register_tables, md_columns_widths) + if ("md" %in% outputs) render_register_md(list_register_tables) if ("html" %in% outputs) render_register_html(list_register_tables, md_columns_widths) if ("json" %in% outputs) render_register_json(list_register_tables) diff --git a/R/utils_create_filtered_register_csvs.R b/R/utils_create_filtered_register_csvs.R new file mode 100644 index 0000000..72a6629 --- /dev/null +++ b/R/utils_create_filtered_register_csvs.R @@ -0,0 +1,58 @@ +create_filtered_register_csvs <- function(filter_by, register){ + + for (filter in filter_by){ + column_name <- determine_column_name(filter) + unique_values <- unique(register$column_name) + + for (value in unique_values) { + filtered_register <- register[register$column_name==value, ] + output_dir <- get_output_dir(filter, value) + + if (!dir.exists(dirname(output_dir))) { + dir.create(dirname(output_dir), recursive = TRUE, showWarnings = TRUE) + } + + write.csv(filtered_register, output_dir, row.names=FALSE) + } + } +} + +determine_column_name <- function(filter) { + result <- switch(filter, + "venue" = "Type", + NULL # Default case is set to NULL + ) + if (is.null(result)) { + stop(paste("Filter", filter, "is not recognized.")) + } + + return(result) +} + +get_output_dir <- function(filter, value) { + if (filter=="none"){ + return(paste0("docs/")) + } + + else if (filter=="venue"){ + venue_category <- determine_venue_category(value) + # Removing the venue category to obtain the venue name + venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", venue_name))) + + return(paste0("docs/", filter, "/", venue_category, "/", venue_name, "/")) + } + + else{ + return(paste0("docs/", filter, "/", gsub(" ", "_", tolower(value)), "/")) + } +} + +determine_venue_category <- function(venue_name){ + for (category in list_venue_categories){ + if (grepl(category, venue_name)) { + return(category) + } + } + # The venue does not belong to the listed categories. Throwing an error + stop(paste("Register venue does not fall into any of the following venue categories:", toString(list_venue_categories))) +} diff --git a/R/utils_register_sort.R b/R/utils_register_sort.R index 303733b..da4d720 100644 --- a/R/utils_register_sort.R +++ b/R/utils_register_sort.R @@ -1,19 +1,36 @@ -#' Function for creating a list of register tables that is sorted by venue. -#' Each entry in the resulting list uses a key that combines 'venue_' with the venue name, -#' and maps to a corresponding sorted register table. -#' +#' Function for adding filtered register tables to a list based on specified filters. +#' Each entry in the resulting list is a filtered register table by the filter type provided. +#' +#' @param list_register_tables A list to store the filtered tables +#' @param register_table The register table to filter +#' @param filter_by A vector of strings specifying the filter types +#' @return A list of filtered register tables +add_filtered_register_tables <- function(list_register_tables, register_table, filter_by) { + + for (filter in filter_by){ + list_register_tables[[filter]] <- create_filtered_register_tables(register_table, filter) + } + + return(list_register_tables) +} + +#' Function for creating a list of register tables that is filtered based on the filter type. +#' Each entry in the resulting list is the filtered register table with index corresponding to unique values in that column. +#' #' @param register_table The register table -#' @return A list of venue sorted register tables. -create_list_venue_sorted_register_tables <- function(register_table) { - # List of venues - list_venues <- unique(register_table$Type) +#' @param filter_column The column to filter by +#' @return A list of filtered register tables +create_filtered_register_tables <- function(register_table, filter) { + list_filtered_register_tables <- list() + + column_name <- determine_column_name(filter) + unique_values <- unique(register_table$column_name) - # Loop over venues. For each venue we create a separate register table - list_venue_sorted_register_tables <- list() - for (venue in list_venues) { - sorted_register_table <- register_table[register_table$`Type`==venue, ] - rownames(sorted_register_table) <- NULL # Reset row names to remove row numbers - list_venue_sorted_register_tables[[paste("venue", venue, " ")]] <- sorted_register_table + # Loop over the unique values. We create a sorted table for each value + for (value in unique_values) { + filtered_table <- register_table[register_table$column_name==value, ] + rownames(filtered_table) <- NULL # Reset row names to remove row numbers + list_filtered_register_tables[[value]] <- filtered_table } - return(list_venue_sorted_register_tables) -} \ No newline at end of file + return(list_filtered_register_tables) +} diff --git a/R/utils_render_register.R b/R/utils_render_register.R deleted file mode 100644 index 0e34acc..0000000 --- a/R/utils_render_register.R +++ /dev/null @@ -1,347 +0,0 @@ -#' Function to load the markdown table -#' -#' @param template_path The path to the markdown template -#' @return The markdown table template -load_markdown_table_template <- function(template_path){ - if (!file.exists(template_path)){ - stop("No register table template found") - } - - markdown_table_template <- readLines(template_path) - return(markdown_table_template) -} - -#' Function to adjust the markdown title based on the specific register table name. -#' -#' @param markdown_table The markdown template where the title needs to be adjusted -#' @param register_table_name The name of the register table -#' -#' @return The modified markdown table -adjust_markdown_title <- function(markdown_table, register_table_name){ - title_addition <- "" - - if (grepl("venue", register_table_name)){ - venue_name <- sub("^venue", "", register_table_name) - title_addition <- paste0("for", venue_name) - } - - markdown_table <- gsub("\\$title_addition\\$", title_addition, markdown_table) - return(markdown_table) -} - -#' Function to determine the appropriate output file directory based on the register table name. -#' -#' @param register_table_name The name of the register table -#' @return The path to the output file directory -determine_output_file_directory <- function(register_table_name) { - if (grepl("venue", register_table_name)){ - - # Removing the prefix "venue" - venue_name <- sub("^venue", "", register_table_name) - venue_name <- trimws(venue_name) # Removing trailing space - venue_name <- gsub(" ", "_", gsub("[()]", "", venue_name)) - - # Determining the subfolder name - list_subfolder_names <- c("community", "journal", "conference") - matches <- sapply(list_subfolder_names, grepl, x = register_table_name) - - if (any(matches)) { - subfolder_name <- names(matches)[which(matches)[1]] - # Remove the subfolder name and an underscore from the venue name - venue_name <- gsub(paste0(subfolder_name, "_"), "", venue_name) - } else { - stop(paste("Register does not fall into any of the following categories:", list_subfolder_names)) - } - - return(paste0("docs/venues/", subfolder_name, "/", venue_name)) - } else { - return(paste0("docs")) - } -} - -#' Function for adding repository links in the register table for the creation of the markdown file. -#' -#' @param register_table The register table -#' @return Register table with adjusted repository links -add_repository_links_md <- function(register_table) { - register_table$Repository <- sapply( - X = register_table$Repository, - FUN = function(repository) { - spec <- parse_repository_spec(repository) - if (!any(is.na(spec))) { - urrl <- "#" - - switch(spec["type"], - "github" = { - urrl <- paste0("https://github.com/", spec[["repo"]]) - paste0("[", spec[["repo"]], "](", urrl, ")") - }, - "osf" = { - urrl <- paste0("https://osf.io/", spec[["repo"]]) - paste0("[", spec[["repo"]], "](", urrl, ")") - }, - "gitlab" = { - urrl <- paste0("https://gitlab.com/", spec[["repo"]]) - paste0("[", spec[["repo"]], "](", urrl, ")") - }, - - # Type is none of the above - { - repository - } - ) - } else { - repository - } - } - ) - return(register_table) -} - -#' Function for adding repository links in the register table for the creation of the html file. -#' -#' @param register_table The register table -#' @return Register table with adjusted repository links -add_repository_links_html <- function(register_table) { - register_table$Repository <- sapply( - X = register_table$Repository, - FUN = function(repository) { - spec <- parse_repository_spec(repository) - if (!any(is.na(spec))) { - urrl <- "#" - if (spec[["type"]] == "github") { - urrl <- paste0("https://github.com/", spec[["repo"]]) - paste0(" [", spec[["repo"]], "](", urrl, ")") - } else if (spec[["type"]] == "osf") { - urrl <- paste0("https://osf.io/", spec[["repo"]]) - paste0(" [", spec[["repo"]], "](", urrl, ")") - } else if (spec[["type"]] == "gitlab") { - urrl <- paste0("https://gitlab.com/", spec[["repo"]]) - paste0(" [", spec[["repo"]], "](", urrl, ")") - } else { - repository - } - } else { - repository - } - } - ) - return(register_table) -} - -#' Function for adding repository links in the register table for the creation of the json file. -#' -#' @param register_table The register table -#' @return Register table with adjusted repository links -add_repository_links_json <- function(register_table) { - register_table$`Repository Link` <- sapply( - X = register_table$Repository, - FUN = function(repository) { - spec <- parse_repository_spec(repository) - if (spec[["type"]] == "github") { - paste0("https://github.com/", spec[["repo"]]) - } else if (spec[["type"]] == "osf") { - paste0("https://osf.io/", spec[["repo"]]) - } else if (spec[["type"]] == "gitlab") { - paste0("https://gitlab.com/", spec[["repo"]]) - } else { - repository - } - } - ) - return(register_table) -} - -#' Render Markdown files for register tables. -#' -#' @param list_register_tables A list of register tables -#' @param md_columns_widths A string specifying the Markdown formatting for column widths. -#' -#' @return None -#' @importFrom kable kable -#' @importFrom gsub gsub -#' @importFrom dir.exists dir.exists -#' @importFrom dir.create dir.create -#' @importFrom writeLines writeLines -render_register_md <- function(list_register_tables, md_columns_widths) { - template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") - - # Looping over the list of register tables and creating a md file for each - for (register_table_name in names(list_register_tables)) { - markdown_table <- load_markdown_table_template(template_path) - register_table <- list_register_tables[[register_table_name]] - - register_table <- add_repository_links_md(register_table) - - # Fill in the content - markdown_content <- capture.output(kable(register_table, format = "markdown")) - - markdown_table <- adjust_markdown_title(markdown_table, register_table_name) - markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) - - # Adjusting the column widths - markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) - - alignment_line_index <- grep("^\\|:---", markdown_table) - markdown_table[alignment_line_index] <- md_columns_widths - - # Determining the directory and saving the file - output_dir <- determine_output_file_directory(register_table_name) - if (!dir.exists(output_dir)) { - dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) - } - output_file_path <- paste0(output_dir, "/register.md") - - writeLines(markdown_table, output_file_path) - } -} - -#' Dynamically generates a html_document.yml with the full paths to the index header, prefix -#' and postfix.html files. -#' -#' @return None -generate_html_document_yml <- function() { - working_dir <- getwd() - yaml_content <- sprintf( - "# DO NOT EDIT THIS FILE MANUALLY - html_document: - includes: - in_header: '%s/docs/index_header.html' - before_body: '%s/docs/index_prefix.html' - after_body: '%s/docs/index_postfix.html' - mathjax: null - highlight: null - self_contained: false - lib_dir: libs", - working_dir, working_dir, working_dir - ) - writeLines(yaml_content, "docs/html_document.yml") -} - -#' Function for rendering the register html file. -#' The html file is rendered from the markdown file. -#' -#' @param register_table The register table -#' @param md_columns_widths The column widths for the markdown file -#' @return None -render_register_html <- function(list_register_tables, md_columns_widths) { - template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") - generate_html_document_yml() - - # Loop over each register table - for (register_table_name in names(list_register_tables)) { - markdown_table <- load_markdown_table_template(template_path) - register_table <- list_register_tables[[register_table_name]] - - # Add icons to the Repository column for HTML output, use a copy of the register.md - register_table <- add_repository_links_html(register_table) - - # Capture the HTML output in a markdown table first - markdown_content <- capture.output(knitr::kable(register_table, format = "markdown")) - - markdown_table <- adjust_markdown_title(markdown_table, register_table_name) - markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) - - # Adjust column width - markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) - alignment_line_index <- grep("^\\|:---", markdown_table) - markdown_table[alignment_line_index] <- md_columns_widths - - # Determine the output path - output_dir <- determine_output_file_directory(register_table_name) - if (!dir.exists(dirname(output_dir))) { - dir.create(dirname(output_dir), recursive = TRUE, showWarnings = TRUE) - } - - # Save the modified markdown to a temporary file - temp_file_path <- paste0(output_dir, "/temp-file.md") - writeLines(markdown_table, temp_file_path) - - yaml_path <- normalizePath(file.path(getwd(), "docs/html_document.yml")) - - # Render HTML from markdown - rmarkdown::render( - input = temp_file_path, - output_file = "index.html", - output_dir = output_dir, - output_yaml = yaml_path - ) - file.remove(temp_file_path) - } -} - -#' Function for rendering the register json file. -#' -#' @param register_table The register table -#' @param register The register from the register.csv file -#' @return None -render_register_json <- function(list_register_tables, register) { - for (register_table_name in names(list_register_tables)) { - register_table <- list_register_tables[[register_table_name]] - register_table <- add_repository_links_json(register_table) - - # Get paper titles and references - titles <- c() - references <- c() - for (i in seq_len(nrow(register_table))) { - config_yml <- get_codecheck_yml(register_table[i, ]$Repository) - - title <- NA - reference <- NA - if (!is.null(config_yml)) { - title <- config_yml$paper$title - reference <- config_yml$paper$reference - } - - titles <- c(titles, title) - references <- c(references, reference) - } - register_table$Title <- stringr::str_trim(titles) - register_table$`Paper reference` <- stringr::str_trim(references) - - output_dir <- determine_output_file_directory(register_table_name) - if (!dir.exists(output_dir)) { - dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) - } - - jsonlite::write_json( - register_table[, c( - "Certificate", - "Repository Link", - "Type", - "Report", - "Title", - "Paper reference", - "Check date" - )], - path = paste0(output_dir, "/register.json"), - pretty = TRUE - ) - - jsonlite::write_json( - utils::tail(register_table, 10)[, c( - "Certificate", - "Repository Link", - "Type", - "Report", - "Title", - "Paper reference", - "Check date" - )], - path = paste0(output_dir, "/featured.json"), - pretty = TRUE - ) - - jsonlite::write_json( - list( - source = "https://codecheck.org.uk/register/register.json", - cert_count = nrow(register_table) - # TODO count conferences, preprints, - # journals, etc. - ), - auto_unbox = TRUE, - path = paste0(output_dir, "/stats.json"), - pretty = TRUE - ) - } -} diff --git a/R/utils_render_register_json.R b/R/utils_render_register_json.R new file mode 100644 index 0000000..4dc7bb6 --- /dev/null +++ b/R/utils_render_register_json.R @@ -0,0 +1,107 @@ +#' Function for adding repository links in the register table for the creation of the json file. +#' +#' @param register_table The register table +#' @return Register table with adjusted repository links +add_repository_links_json <- function(register_table) { + register_table$`Repository Link` <- sapply( + X = register_table$Repository, + FUN = function(repository) { + spec <- parse_repository_spec(repository) + if (spec[["type"]] == "github") { + paste0("https://github.com/", spec[["repo"]]) + } else if (spec[["type"]] == "osf") { + paste0("https://osf.io/", spec[["repo"]]) + } else if (spec[["type"]] == "gitlab") { + paste0("https://gitlab.com/", spec[["repo"]]) + } else { + repository + } + } + ) + return(register_table) +} + +set_paper_title_references <- function(register_table){ + titles <- c() + references <- c() + for (i in seq_len(nrow(register_table))) { + config_yml <- get_codecheck_yml(register_table[i, ]$Repository) + + title <- NA + reference <- NA + if (!is.null(config_yml)) { + title <- config_yml$paper$title + reference <- config_yml$paper$reference + } + + titles <- c(titles, title) + references <- c(references, reference) + } + register_table$Title <- stringr::str_trim(titles) + register_table$`Paper reference` <- stringr::str_trim(references) + + return(register_table) +} + +render_register_json <- function(filter, register_table, register_table_name) { + register_table <- add_repository_links_json(register_table) + + # Set paper titles and references + register_table <- set_paper_title_references(register_table) + + output_dir <- get_output_dir(filter, register_table_name) + if (!dir.exists(output_dir)) { + dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) + } + + jsonlite::write_json( + register_table[, c( + "Certificate", + "Repository Link", + "Type", + "Report", + "Title", + "Paper reference", + "Check date" + )], + path = paste0(output_dir, "register.json"), + pretty = TRUE + ) + + jsonlite::write_json( + utils::tail(register_table, 10)[, c( + "Certificate", + "Repository Link", + "Type", + "Report", + "Title", + "Paper reference", + "Check date" + )], + path = paste0(output_dir, "featured.json"), + pretty = TRUE + ) + + jsonlite::write_json( + list( + source = set_href(filter, register_table_name, "json"), + cert_count = nrow(register_table) + # TODO count conferences, preprints, + # journals, etc. + ), + auto_unbox = TRUE, + path = paste0(output_dir, "/stats.json"), + pretty = TRUE + ) +} + +render_register_jsons <- function(list_register_tables){ + # Loop over each register table + for (filter in names(list_register_tables)){ + for (register_table_name in names(list_register_tables[[filter]])) { + register_table <- list_register_tables[[filter]][[register_table_name]] + render_register_json(filter, register_table, register_table_name) + } + } +} + diff --git a/R/utils_render_register_mds.R b/R/utils_render_register_mds.R new file mode 100644 index 0000000..14c3708 --- /dev/null +++ b/R/utils_render_register_mds.R @@ -0,0 +1,106 @@ +#' Function to load the markdown table +#' +#' @param template_path The path to the markdown template +#' @return The markdown table template +load_markdown_table_template <- function(template_path){ + if (!file.exists(template_path)){ + stop("No register table template found") + } + + markdown_table_template <- readLines(template_path) + return(markdown_table_template) +} + +#' Function to adjust the markdown title based on the specific register table name. +#' +#' @param markdown_table The markdown template where the title needs to be adjusted +#' @param register_table_name The name of the register table +#' +#' @return The modified markdown table +adjust_markdown_title <- function(markdown_table, register_table_name){ + + if (register_table_name != "Original"){ + title_addition <- "" + } + + else { + title_addition <- paste("for", register_table_name) + } + + markdown_table <- gsub("\\$title_addition\\$", title_addition, markdown_table) + return(markdown_table) +} + +#' Function for adding repository links in the register table for the creation of the markdown file. +#' +#' @param register_table The register table +#' @return Register table with adjusted repository links +add_repository_links_md <- function(register_table) { + register_table$Repository <- sapply( + X = register_table$Repository, + FUN = function(repository) { + spec <- parse_repository_spec(repository) + if (!any(is.na(spec))) { + urrl <- "#" + + switch(spec["type"], + "github" = { + urrl <- paste0("https://github.com/", spec[["repo"]]) + paste0("[", spec[["repo"]], "](", urrl, ")") + }, + "osf" = { + urrl <- paste0("https://osf.io/", spec[["repo"]]) + paste0("[", spec[["repo"]], "](", urrl, ")") + }, + "gitlab" = { + urrl <- paste0("https://gitlab.com/", spec[["repo"]]) + paste0("[", spec[["repo"]], "](", urrl, ")") + }, + + # Type is none of the above + { + repository + } + ) + } else { + repository + } + } + ) + return(register_table) +} + +# Helper function to process each table and convert it to markdown format +render_register_md <- function(filter, register_table, register_table_name) { + markdown_table <- load_markdown_table_template(template_path) + register_table <- add_repository_links_md(register_table) + + # Fill in the content + markdown_content <- capture.output(kable(register_table, format = "markdown")) + + markdown_table <- adjust_markdown_title(markdown_table, register_table_name) + markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) + + # Adjusting the column widths + markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) + # Determining which line to add the md column widths in + alignment_line_index <- grep("^\\|:---", markdown_table) + markdown_table[alignment_line_index] <- md_columns_widths + + # Determining the directory and saving the file + output_dir <- get_output_dir(filter, register_table_name) + if (!dir.exists(output_dir)) { + dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) + } + output_file_path <- paste0(output_dir, "register.md") + + writeLines(markdown_table, output_file_path) +} + +render_register_mds <- function(list_register_tables){ + for (filter in names(list_register_tables)){ + for (register_table_name in names(list_register_tables[[filter]])) + register_table <- list_register_tables[[filter]][[register_table_name]] + render_register_md(filter, register_table, register_table_name) + } +} diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r new file mode 100644 index 0000000..d7c1fbd --- /dev/null +++ b/R/utils_render_reigster_html.r @@ -0,0 +1,192 @@ +#' Function for adding repository links in the register table for the creation of the html file. +#' +#' @param register_table The register table +#' @return Register table with adjusted repository links +add_repository_links_html <- function(register_table) { + register_table$Repository <- sapply( + X = register_table$Repository, + FUN = function(repository) { + spec <- parse_repository_spec(repository) + if (!any(is.na(spec))) { + urrl <- "#" + if (spec[["type"]] == "github") { + urrl <- paste0("https://github.com/", spec[["repo"]]) + paste0(" [", spec[["repo"]], "](", urrl, ")") + } else if (spec[["type"]] == "osf") { + urrl <- paste0("https://osf.io/", spec[["repo"]]) + paste0(" [", spec[["repo"]], "](", urrl, ")") + } else if (spec[["type"]] == "gitlab") { + urrl <- paste0("https://gitlab.com/", spec[["repo"]]) + paste0(" [", spec[["repo"]], "](", urrl, ")") + } else { + repository + } + } else { + repository + } + } + ) + return(register_table) +} + +#' Dynamically generates a html_document.yml with the full paths to the index header, prefix +#' and postfix.html files. +#' +#' @return None +generate_html_document_yml <- function(filter, register_table_name) { + dir <- paste0(getwd(), get_output_dir(filter, register_table_name)) + + yaml_content <- sprintf( + "# DO NOT EDIT THIS FILE MANUALLY + html_document: + includes: + in_header: '%sindex_header.html' + before_body: '%sindex_prefix.html' + after_body: '%sindex_postfix.html' + mathjax: null + highlight: null + self_contained: false + lib_dir: libs", + dir, dir, dir + ) + writeLines(yaml_content, paste0(dir, "html_document.yml")) +} + +create_index_postfix_html <- function(filter, register_table_name){ + hrefs <- set_html_postfix_hrefs(filter, register_table_name) + + # Using the index_postfix_template + postfix_template <- readLines(paste0(getwd(), "/docs/index_postfix.html"), warn = FALSE) + + # Render the template with the correct hrefs + output <- whisker.render(postfix_template, hrefs) + writeLines(output, get_output_dir(filter, register_table_name)) +} + +create_index_prefix_html <- function(filter, register_table_name){ + # Using the index_prefix_template + prefix_template <- readLines(paste0(getwd(), "/docs/index_prefix.html"), warn = FALSE) + + writeLines(prefix_template, get_output_dir(filter, register_table_name)) +} + +create_index_header_html <- function(filter, register_table_name){ + # Using the index_header_template + header_template <- readLines(paste0(getwd(), "/docs/index_header.html"), warn = FALSE) + + writeLines(header_template, get_output_dir(filter, register_table_name)) +} + +set_html_postfix_hrefs <- function(filter, register_table_name) { + hrefs <- list( + csv_source_href = set_href(filter, register_table_name, "csv_source"), + searchable_csv_href = set_href(filter, register_table_name, "searchable_csv"), + json_href = set_href(filter, register_table_name, "json"), + md_href = set_href(filter, register_table_name, "md") + ) + return(hrefs) +} + +set_href <- function(filter, register_table_name, href_type) { + base_url <- "https://" + + # Determine base path based on the resource type + switch(href_type, + "csv_source" = base_url <- paste0(base_url, "raw.githubusercontent.com/codecheckers/register/master/"), + "searchable_csv" = base_url <- paste0(base_url, "github.com/codecheckers/register/blob/master/"), + "json" = base_url <- paste0(base_url, "codecheck.org.uk/register/"), + "md" = base_url <- paste0(base_url, "codecheck.org.uk/register/") + ) + + if (filter == "None") { + return(paste0(base_url, "register.", href_type)) + } else if (filter == "venue") { + venue_category <- determine_venue_category(register_table_name) + venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", register_table_name))) + return(paste0(base_url, filter, "/", venue_category, "/", venue_name, "/register.", href_type)) + } else { + return(paste0(base_url, filter, "/", register_table_name, "/register.", href_type)) + } +} + +create_temp_md_file <- function(filter, register_table, register_table_name){ + # Capture the HTML output in a markdown table first + markdown_content <- capture.output(knitr::kable(register_table, format = "markdown")) + + markdown_table <- adjust_markdown_title(markdown_table, register_table_name) + markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) + + # Adjust column width + markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) + alignment_line_index <- grep("^\\|:---", markdown_table) + markdown_table[alignment_line_index] <- md_columns_widths + + # Determine the output path + output_dir <- get_output_dir(filter, register_table_name) + if (!dir.exists(dirname(output_dir))) { + dir.create(dirname(output_dir), recursive = TRUE, showWarnings = TRUE) + } + + # Save the modified markdown to a temporary file + temp_file_path <- paste0(output_dir, "/temp.md") + writeLines(markdown_table, temp_file_path) +} + +create_section_htmls <- function(filter, register_table_name) { + create_index_postfix_html(filter, register_table_name) + create_index_prefix_html(filter, register_table_name) + create_index_header_html(filter, register_table_name) +} + +render_register_html <- function(filter, register_table, register_table_name){ + generate_html_document_yml(filter, register_table_name) + markdown_table <- load_markdown_table_template(template_path) + + # Add icons to the Repository column for HTML output, use a copy of the register.md + register_table <- add_repository_links_html(register_table) + + # Dynamically create the index header, prefix and postfix files + create_section_htmls(filter, register_table_name) + create_html_yaml(filter, register_table_name) + + output_dir <- get_output_dir(filter, register_table_name) + # Capture the HTML output from a markdown file + # Check if .md already exists + if (!dir.exists(paste0(output_dir, "register.md"))){ + md_file_path <- paste0(output_dir, "register.md") + temp_md_used <- FALSE + } + + # If .md does not exist create a temp md file + else{ + create_temp_md_file(filter, register_table, register_table_name) + md_file_path <- paste0(output_dir, "temp.md") + temp_md_used <- TRUE + } + + yaml_path <- normalizePath(file.path(getwd(), paste0(output_dir, "docs/html_document.yml"))) + + # Render HTML from markdown + rmarkdown::render( + input = md_file_path, + output_file = "index.html", + output_dir = output_dir, + output_yaml = yaml_path + ) + + if (temp_md_used){ + file.remove(temp_file_path) + } +} + +render_register_htmls <- function(list_register_tables, md_columns_widths) { + template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") + + # Loop over each register table + for (filter in names(list_register_tables)){ + for (register_table_name in names(list_register_tables[[filter]])) { + register_table <- list_register_tables[[filter]][[register_table_name]] + render_register_html(filter, register_table, register_table_name) + } + } +} From a403f025111d1240608fe4f6ce3e89c01c0c39f3 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Fri, 24 May 2024 12:53:03 +0200 Subject: [PATCH 25/36] added arguments to function --- R/register.R | 10 ++++---- R/utils_render_register_mds.R | 43 +++++++++++++++++++--------------- R/utils_render_reigster_html.r | 34 ++++----------------------- 3 files changed, 34 insertions(+), 53 deletions(-) diff --git a/R/register.R b/R/register.R index d290e59..370918a 100644 --- a/R/register.R +++ b/R/register.R @@ -23,9 +23,9 @@ register_render <- function(register = read.csv("register.csv", as.is = TRUE), outputs = c("html", "md", "json")) { list_venue_categories <- c("community", "journal", "conference") - template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") + md_template <- system.file("extdata", "templates/template_register.md", package = "codecheck") md_columns_widths <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" - + register_table <- preprocess_register(register) # Creating list of of register tables with indices being the filter types @@ -40,9 +40,9 @@ register_render <- function(register = read.csv("register.csv", as.is = TRUE), } # Rendering files - if ("md" %in% outputs) render_register_md(list_register_tables) - if ("html" %in% outputs) render_register_html(list_register_tables, md_columns_widths) - if ("json" %in% outputs) render_register_json(list_register_tables) + if ("md" %in% outputs) render_register_mds(list_register_tables, md_template, md_columns_widths) + if ("html" %in% outputs) render_register_htmls(list_register_tables, md_template, md_columns_widths) + if ("json" %in% outputs) render_register_jsons(list_register_tables) return(register_table) } diff --git a/R/utils_render_register_mds.R b/R/utils_render_register_mds.R index 14c3708..f7aee4e 100644 --- a/R/utils_render_register_mds.R +++ b/R/utils_render_register_mds.R @@ -2,13 +2,13 @@ #' #' @param template_path The path to the markdown template #' @return The markdown table template -load_markdown_table_template <- function(template_path){ +load_md_template <- function(template_path){ if (!file.exists(template_path)){ stop("No register table template found") } - markdown_table_template <- readLines(template_path) - return(markdown_table_template) + md_table <- readLines(template_path) + return(md_table) } #' Function to adjust the markdown title based on the specific register table name. @@ -17,7 +17,7 @@ load_markdown_table_template <- function(template_path){ #' @param register_table_name The name of the register table #' #' @return The modified markdown table -adjust_markdown_title <- function(markdown_table, register_table_name){ +adjust_markdown_title <- function(md_table, register_table_name){ if (register_table_name != "Original"){ title_addition <- "" @@ -27,8 +27,8 @@ adjust_markdown_title <- function(markdown_table, register_table_name){ title_addition <- paste("for", register_table_name) } - markdown_table <- gsub("\\$title_addition\\$", title_addition, markdown_table) - return(markdown_table) + md_table <- gsub("\\$title_addition\\$", title_addition, md_table) + return(md_table) } #' Function for adding repository links in the register table for the creation of the markdown file. @@ -71,36 +71,41 @@ add_repository_links_md <- function(register_table) { } # Helper function to process each table and convert it to markdown format -render_register_md <- function(filter, register_table, register_table_name) { - markdown_table <- load_markdown_table_template(template_path) - register_table <- add_repository_links_md(register_table) - +render_register_md <- function(filter, register_table, register_table_name, md_table, md_columns_widths, is_temp_file=FALSE) { # Fill in the content markdown_content <- capture.output(kable(register_table, format = "markdown")) - markdown_table <- adjust_markdown_title(markdown_table, register_table_name) - markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) + md_table <- adjust_markdown_title(md_table, register_table_name) + md_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), md_table) # Adjusting the column widths - markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) + md_table <- unlist(strsplit(md_table, "\n", fixed = TRUE)) # Determining which line to add the md column widths in - alignment_line_index <- grep("^\\|:---", markdown_table) - markdown_table[alignment_line_index] <- md_columns_widths + alignment_line_index <- grep("^\\|:---", md_table) + md_table[alignment_line_index] <- md_columns_widths # Determining the directory and saving the file output_dir <- get_output_dir(filter, register_table_name) if (!dir.exists(output_dir)) { dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } - output_file_path <- paste0(output_dir, "register.md") - writeLines(markdown_table, output_file_path) + if (is_temp_file){ + output_file_path <- paste0(output_dir, "temp.md") + } + + else{ + output_file_path <- paste0(output_dir, "register.md") + } + + writeLines(md_table, output_file_path) } -render_register_mds <- function(list_register_tables){ +render_register_mds <- function(list_register_tables, md_template){ + md_table <- load_md_template(md_template) for (filter in names(list_register_tables)){ for (register_table_name in names(list_register_tables[[filter]])) register_table <- list_register_tables[[filter]][[register_table_name]] - render_register_md(filter, register_table, register_table_name) + render_register_md(filter, register_table, register_table_name, md_table, md_columns_widths) } } diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index d7c1fbd..64cc106 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -109,38 +109,14 @@ set_href <- function(filter, register_table_name, href_type) { } } -create_temp_md_file <- function(filter, register_table, register_table_name){ - # Capture the HTML output in a markdown table first - markdown_content <- capture.output(knitr::kable(register_table, format = "markdown")) - - markdown_table <- adjust_markdown_title(markdown_table, register_table_name) - markdown_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), markdown_table) - - # Adjust column width - markdown_table <- unlist(strsplit(markdown_table, "\n", fixed = TRUE)) - alignment_line_index <- grep("^\\|:---", markdown_table) - markdown_table[alignment_line_index] <- md_columns_widths - - # Determine the output path - output_dir <- get_output_dir(filter, register_table_name) - if (!dir.exists(dirname(output_dir))) { - dir.create(dirname(output_dir), recursive = TRUE, showWarnings = TRUE) - } - - # Save the modified markdown to a temporary file - temp_file_path <- paste0(output_dir, "/temp.md") - writeLines(markdown_table, temp_file_path) -} - create_section_htmls <- function(filter, register_table_name) { create_index_postfix_html(filter, register_table_name) create_index_prefix_html(filter, register_table_name) create_index_header_html(filter, register_table_name) } -render_register_html <- function(filter, register_table, register_table_name){ +render_register_html <- function(filter, register_table, register_table_name, md_table, md_columns_widths){ generate_html_document_yml(filter, register_table_name) - markdown_table <- load_markdown_table_template(template_path) # Add icons to the Repository column for HTML output, use a copy of the register.md register_table <- add_repository_links_html(register_table) @@ -159,7 +135,7 @@ render_register_html <- function(filter, register_table, register_table_name){ # If .md does not exist create a temp md file else{ - create_temp_md_file(filter, register_table, register_table_name) + render_register_md(filter, register_table, register_table_name, md_table, md_columns_widths, is_temp_file=TRUE) md_file_path <- paste0(output_dir, "temp.md") temp_md_used <- TRUE } @@ -179,14 +155,14 @@ render_register_html <- function(filter, register_table, register_table_name){ } } -render_register_htmls <- function(list_register_tables, md_columns_widths) { - template_path <- system.file("extdata", "templates/template_register.md", package = "codecheck") +render_register_htmls <- function(list_register_tables, md_template, md_columns_widths) { + md_table <- load_md_template(md_template) # Loop over each register table for (filter in names(list_register_tables)){ for (register_table_name in names(list_register_tables[[filter]])) { register_table <- list_register_tables[[filter]][[register_table_name]] - render_register_html(filter, register_table, register_table_name) + render_register_html(filter, register_table, register_table_name, md_table, md_columns_widths) } } } From 8f80674467ae1279925f63dc4c8dfd86aebba29b Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Fri, 24 May 2024 16:04:06 +0200 Subject: [PATCH 26/36] error free --- DESCRIPTION | 3 +- NAMESPACE | 1 + R/register.R | 17 +++--- R/utils_create_filtered_register_csvs.R | 33 +++++++----- ...r_sort.R => utils_filter_register_table.R} | 10 ++-- R/utils_render_register_mds.R | 25 ++++----- R/utils_render_reigster_html.r | 53 ++++++++----------- 7 files changed, 75 insertions(+), 67 deletions(-) rename R/{utils_register_sort.R => utils_filter_register_table.R} (85%) diff --git a/DESCRIPTION b/DESCRIPTION index f49e365..dad3fbf 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -32,7 +32,8 @@ Imports: rorcid, osfr, httr, - zen4R + zen4R, + whisker Encoding: UTF-8 LazyData: true RoxygenNote: 7.3.1 diff --git a/NAMESPACE b/NAMESPACE index 3b57eda..db3d082 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -40,3 +40,4 @@ importFrom(xtable,xtable) importFrom(yaml,read_yaml) importFrom(yaml,yaml.load) importFrom(zen4R,ZenodoRecord) +importFrom(whisker, whisker.render) diff --git a/R/register.R b/R/register.R index 370918a..c080610 100644 --- a/R/register.R +++ b/R/register.R @@ -1,3 +1,9 @@ +CONFIG <- new.env() +CONFIG$FILTER_SUB_GROUPS <- list( + venues = list("community", "journal", "conference", "codecheck_nl") +) +CONFIG$MD_COLUMNS_WIDTHS <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" + #' Function for rendering the register into different view #' #' NOTE: You should put a GitHub API token inth the environment variable `GITHUB_PAT` to fix rate limits. Acquire one at see https://github.com/settings/tokens. @@ -19,13 +25,10 @@ #' #' @export register_render <- function(register = read.csv("register.csv", as.is = TRUE), - filter_by = c("venue"), + filter_by = c("venues"), outputs = c("html", "md", "json")) { + CONFIG$MD_TEMPLATE <- system.file("extdata", "templates/template_register.md", package = "codecheck") - list_venue_categories <- c("community", "journal", "conference") - md_template <- system.file("extdata", "templates/template_register.md", package = "codecheck") - md_columns_widths <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" - register_table <- preprocess_register(register) # Creating list of of register tables with indices being the filter types @@ -40,8 +43,8 @@ register_render <- function(register = read.csv("register.csv", as.is = TRUE), } # Rendering files - if ("md" %in% outputs) render_register_mds(list_register_tables, md_template, md_columns_widths) - if ("html" %in% outputs) render_register_htmls(list_register_tables, md_template, md_columns_widths) + if ("md" %in% outputs) render_register_mds(list_register_tables) + if ("html" %in% outputs) render_register_htmls(list_register_tables) if ("json" %in% outputs) render_register_jsons(list_register_tables) return(register_table) diff --git a/R/utils_create_filtered_register_csvs.R b/R/utils_create_filtered_register_csvs.R index 72a6629..46daf6f 100644 --- a/R/utils_create_filtered_register_csvs.R +++ b/R/utils_create_filtered_register_csvs.R @@ -1,12 +1,12 @@ -create_filtered_register_csvs <- function(filter_by, register){ +create_filtered_register_csvs <- function(filter_by, register, FILTER_SUB_GROUPS){ for (filter in filter_by){ column_name <- determine_column_name(filter) - unique_values <- unique(register$column_name) + unique_values <- unique(register[[column_name]]) for (value in unique_values) { - filtered_register <- register[register$column_name==value, ] - output_dir <- get_output_dir(filter, value) + filtered_register <- register[register[[column_name]]==value, ] + output_dir <- paste0(get_output_dir(filter, value), "register.csv") if (!dir.exists(dirname(output_dir))) { dir.create(dirname(output_dir), recursive = TRUE, showWarnings = TRUE) @@ -18,15 +18,15 @@ create_filtered_register_csvs <- function(filter_by, register){ } determine_column_name <- function(filter) { - result <- switch(filter, - "venue" = "Type", + column_name <- switch(filter, + "venues" = "Type", NULL # Default case is set to NULL ) - if (is.null(result)) { + if (is.null(column_name)) { stop(paste("Filter", filter, "is not recognized.")) } - return(result) + return(column_name) } get_output_dir <- function(filter, value) { @@ -34,11 +34,16 @@ get_output_dir <- function(filter, value) { return(paste0("docs/")) } - else if (filter=="venue"){ + else if (filter=="venues"){ venue_category <- determine_venue_category(value) - # Removing the venue category to obtain the venue name - venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", venue_name))) + if (!(venue_category %in% CONFIG$FILTER_SUB_GROUPS[["venues"]])){ + venue_category <- gsub(" ", "_", venue_category) + return(paste0("docs/", filter, "/", venue_category, "/")) + } + # Removing the venue category to obtain the venue name + venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", value))) + venue_name <- gsub(" ", "_", venue_name) return(paste0("docs/", filter, "/", venue_category, "/", venue_name, "/")) } @@ -48,11 +53,13 @@ get_output_dir <- function(filter, value) { } determine_venue_category <- function(venue_name){ + list_venue_categories <- CONFIG$FILTER_SUB_GROUPS[["venues"]] for (category in list_venue_categories){ if (grepl(category, venue_name)) { return(category) } } - # The venue does not belong to the listed categories. Throwing an error - stop(paste("Register venue does not fall into any of the following venue categories:", toString(list_venue_categories))) + # The venue does not belong to the listed categories. + warning(paste("Register venue does not fall into any of the following venue categories:", toString(list_venue_categories), "Setting its own name as a")) + return(venue_name) } diff --git a/R/utils_register_sort.R b/R/utils_filter_register_table.R similarity index 85% rename from R/utils_register_sort.R rename to R/utils_filter_register_table.R index da4d720..6bba2dc 100644 --- a/R/utils_register_sort.R +++ b/R/utils_filter_register_table.R @@ -10,7 +10,8 @@ add_filtered_register_tables <- function(list_register_tables, register_table, f for (filter in filter_by){ list_register_tables[[filter]] <- create_filtered_register_tables(register_table, filter) } - + + list_1 <- unlist(list_register_tables, recursive = TRUE) return(list_register_tables) } @@ -24,13 +25,14 @@ create_filtered_register_tables <- function(register_table, filter) { list_filtered_register_tables <- list() column_name <- determine_column_name(filter) - unique_values <- unique(register_table$column_name) - + unique_values <- unique(register_table[[column_name]]) # Loop over the unique values. We create a sorted table for each value for (value in unique_values) { - filtered_table <- register_table[register_table$column_name==value, ] + filtered_table <- register_table[register_table[[column_name]]==value, ] rownames(filtered_table) <- NULL # Reset row names to remove row numbers list_filtered_register_tables[[value]] <- filtered_table } + + print(names(list_filtered_register_tables)) return(list_filtered_register_tables) } diff --git a/R/utils_render_register_mds.R b/R/utils_render_register_mds.R index f7aee4e..51d44a4 100644 --- a/R/utils_render_register_mds.R +++ b/R/utils_render_register_mds.R @@ -18,8 +18,7 @@ load_md_template <- function(template_path){ #' #' @return The modified markdown table adjust_markdown_title <- function(md_table, register_table_name){ - - if (register_table_name != "Original"){ + if (register_table_name == "original"){ title_addition <- "" } @@ -71,10 +70,11 @@ add_repository_links_md <- function(register_table) { } # Helper function to process each table and convert it to markdown format -render_register_md <- function(filter, register_table, register_table_name, md_table, md_columns_widths, is_temp_file=FALSE) { +render_register_md <- function(filter, register_table, register_table_name, is_temp_file=FALSE) { # Fill in the content + md_table <- load_md_template(CONFIG$MD_TEMPLATE) + markdown_content <- capture.output(kable(register_table, format = "markdown")) - md_table <- adjust_markdown_title(md_table, register_table_name) md_table <- gsub("\\$content\\$", paste(markdown_content, collapse = "\n"), md_table) @@ -82,30 +82,31 @@ render_register_md <- function(filter, register_table, register_table_name, md_t md_table <- unlist(strsplit(md_table, "\n", fixed = TRUE)) # Determining which line to add the md column widths in alignment_line_index <- grep("^\\|:---", md_table) - md_table[alignment_line_index] <- md_columns_widths + md_table[alignment_line_index] <- CONFIG$MD_COLUMNS_WIDTHS # Determining the directory and saving the file output_dir <- get_output_dir(filter, register_table_name) + if (!dir.exists(output_dir)) { dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } if (is_temp_file){ - output_file_path <- paste0(output_dir, "temp.md") + output_dir <- paste0(output_dir, "temp.md") } else{ - output_file_path <- paste0(output_dir, "register.md") + output_dir <- paste0(output_dir, "register.md") } - writeLines(md_table, output_file_path) + writeLines(md_table, output_dir) } -render_register_mds <- function(list_register_tables, md_template){ - md_table <- load_md_template(md_template) +render_register_mds <- function(list_register_tables){ for (filter in names(list_register_tables)){ - for (register_table_name in names(list_register_tables[[filter]])) + for (register_table_name in names(list_register_tables[[filter]])){ register_table <- list_register_tables[[filter]][[register_table_name]] - render_register_md(filter, register_table, register_table_name, md_table, md_columns_widths) + render_register_md(filter, register_table, register_table_name) + } } } diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index 64cc106..926956f 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -34,7 +34,7 @@ add_repository_links_html <- function(register_table) { #' #' @return None generate_html_document_yml <- function(filter, register_table_name) { - dir <- paste0(getwd(), get_output_dir(filter, register_table_name)) + dir <- paste0(getwd(), "/", get_output_dir(filter, register_table_name)) yaml_content <- sprintf( "# DO NOT EDIT THIS FILE MANUALLY @@ -56,25 +56,24 @@ create_index_postfix_html <- function(filter, register_table_name){ hrefs <- set_html_postfix_hrefs(filter, register_table_name) # Using the index_postfix_template - postfix_template <- readLines(paste0(getwd(), "/docs/index_postfix.html"), warn = FALSE) - + postfix_template <- readLines(paste0(getwd(), "/docs/index_postfix_template.html"), warn = FALSE) # Render the template with the correct hrefs output <- whisker.render(postfix_template, hrefs) - writeLines(output, get_output_dir(filter, register_table_name)) + writeLines(output, paste0(get_output_dir(filter, register_table_name), "index_postfix.html")) } create_index_prefix_html <- function(filter, register_table_name){ # Using the index_prefix_template - prefix_template <- readLines(paste0(getwd(), "/docs/index_prefix.html"), warn = FALSE) + prefix_template <- readLines(paste0(getwd(), "/docs/index_prefix_template.html"), warn = FALSE) - writeLines(prefix_template, get_output_dir(filter, register_table_name)) + writeLines(prefix_template, paste0(get_output_dir(filter, register_table_name), "index_prefix.html")) } create_index_header_html <- function(filter, register_table_name){ # Using the index_header_template - header_template <- readLines(paste0(getwd(), "/docs/index_header.html"), warn = FALSE) + header_template <- readLines(paste0(getwd(), "/docs/index_header_template.html"), warn = FALSE) - writeLines(header_template, get_output_dir(filter, register_table_name)) + writeLines(header_template, paste0(get_output_dir(filter, register_table_name), "index_header.html")) } set_html_postfix_hrefs <- function(filter, register_table_name) { @@ -87,25 +86,24 @@ set_html_postfix_hrefs <- function(filter, register_table_name) { return(hrefs) } -set_href <- function(filter, register_table_name, href_type) { - base_url <- "https://" - +set_href <- function(filter, register_table_name, href_type, filter_subcatetgories) { + # Determine base path based on the resource type - switch(href_type, - "csv_source" = base_url <- paste0(base_url, "raw.githubusercontent.com/codecheckers/register/master/"), - "searchable_csv" = base_url <- paste0(base_url, "github.com/codecheckers/register/blob/master/"), - "json" = base_url <- paste0(base_url, "codecheck.org.uk/register/"), - "md" = base_url <- paste0(base_url, "codecheck.org.uk/register/") + result <- switch(href_type, + "csv_source" = list(base_url = "https://raw.githubusercontent.com/codecheckers/register/master/", ext = ".csv"), + "searchable_csv" = list(base_url ="https://github.com/codecheckers/register/blob/master/", ext = ".csv"), + "json" = base_url <- list(base_url = "https://codecheck.org.uk/register/", ext = ".json"), + "md" = base_url <- list(base_url = "https://codecheck.org.uk/register/", ext = ".md") ) if (filter == "None") { return(paste0(base_url, "register.", href_type)) - } else if (filter == "venue") { + } else if (filter == "venues") { venue_category <- determine_venue_category(register_table_name) venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", register_table_name))) - return(paste0(base_url, filter, "/", venue_category, "/", venue_name, "/register.", href_type)) + return(paste0(result$base_url, filter, "/", venue_category, "/", venue_name, "/register", result$ext)) } else { - return(paste0(base_url, filter, "/", register_table_name, "/register.", href_type)) + return(paste0(result$base_url, filter, "/", register_table_name, "/register", result$ext)) } } @@ -115,15 +113,13 @@ create_section_htmls <- function(filter, register_table_name) { create_index_header_html(filter, register_table_name) } -render_register_html <- function(filter, register_table, register_table_name, md_table, md_columns_widths){ - generate_html_document_yml(filter, register_table_name) - +render_register_html <- function(filter, register_table, register_table_name){ # Add icons to the Repository column for HTML output, use a copy of the register.md register_table <- add_repository_links_html(register_table) # Dynamically create the index header, prefix and postfix files create_section_htmls(filter, register_table_name) - create_html_yaml(filter, register_table_name) + generate_html_document_yml(filter, register_table_name) output_dir <- get_output_dir(filter, register_table_name) # Capture the HTML output from a markdown file @@ -135,12 +131,11 @@ render_register_html <- function(filter, register_table, register_table_name, md # If .md does not exist create a temp md file else{ - render_register_md(filter, register_table, register_table_name, md_table, md_columns_widths, is_temp_file=TRUE) + render_register_md(filter, register_table, register_table_name, is_temp_file=TRUE) md_file_path <- paste0(output_dir, "temp.md") temp_md_used <- TRUE } - - yaml_path <- normalizePath(file.path(getwd(), paste0(output_dir, "docs/html_document.yml"))) + yaml_path <- normalizePath(file.path(getwd(), paste0(output_dir, "html_document.yml"))) # Render HTML from markdown rmarkdown::render( @@ -155,14 +150,12 @@ render_register_html <- function(filter, register_table, register_table_name, md } } -render_register_htmls <- function(list_register_tables, md_template, md_columns_widths) { - md_table <- load_md_template(md_template) - +render_register_htmls <- function(list_register_tables) { # Loop over each register table for (filter in names(list_register_tables)){ for (register_table_name in names(list_register_tables[[filter]])) { register_table <- list_register_tables[[filter]][[register_table_name]] - render_register_html(filter, register_table, register_table_name, md_table, md_columns_widths) + render_register_html(filter, register_table, register_table_name) } } } From c297652e5b5fa9282757d8ea4eb967f4e1ae6d53 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Fri, 24 May 2024 23:32:38 +0200 Subject: [PATCH 27/36] renamed venue sub group --- R/register.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/register.R b/R/register.R index c080610..cbee56a 100644 --- a/R/register.R +++ b/R/register.R @@ -1,6 +1,6 @@ CONFIG <- new.env() CONFIG$FILTER_SUB_GROUPS <- list( - venues = list("community", "journal", "conference", "codecheck_nl") + venues = list("community", "journal", "conference", "codecheck nl") ) CONFIG$MD_COLUMNS_WIDTHS <- "|:-------|:--------------------------------|:------------------|:---|:--------------------------|:----------|" From 8cb72dcac31c32fcb1dcdf9f5930753db4a3a903 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Fri, 24 May 2024 23:33:39 +0200 Subject: [PATCH 28/36] edited get_output_dir --- R/utils_create_filtered_register_csvs.R | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/R/utils_create_filtered_register_csvs.R b/R/utils_create_filtered_register_csvs.R index 46daf6f..37a0928 100644 --- a/R/utils_create_filtered_register_csvs.R +++ b/R/utils_create_filtered_register_csvs.R @@ -36,16 +36,15 @@ get_output_dir <- function(filter, value) { else if (filter=="venues"){ venue_category <- determine_venue_category(value) - if (!(venue_category %in% CONFIG$FILTER_SUB_GROUPS[["venues"]])){ - venue_category <- gsub(" ", "_", venue_category) - return(paste0("docs/", filter, "/", venue_category, "/")) + # In case the venue_category itself has no further subgroups we do not need subgroups + if (venue_category==tolower(value)){ + return(paste0("docs/", filter, "/", gsub(" ", "_", venue_category), "/")) } - # Removing the venue category to obtain the venue name + # Removing the venue category to obtain the venue name and replace the brackets venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", value))) venue_name <- gsub(" ", "_", venue_name) - return(paste0("docs/", filter, "/", venue_category, "/", venue_name, "/")) - } + return(paste0("docs/", filter, "/", venue_category, "/", venue_name, "/")) } else{ return(paste0("docs/", filter, "/", gsub(" ", "_", tolower(value)), "/")) @@ -55,11 +54,10 @@ get_output_dir <- function(filter, value) { determine_venue_category <- function(venue_name){ list_venue_categories <- CONFIG$FILTER_SUB_GROUPS[["venues"]] for (category in list_venue_categories){ - if (grepl(category, venue_name)) { + if (grepl(category, venue_name, ignore.case=TRUE)) { return(category) } } - # The venue does not belong to the listed categories. - warning(paste("Register venue does not fall into any of the following venue categories:", toString(list_venue_categories), "Setting its own name as a")) + warning(paste("Register venue", venue_name, "does not fall into any of the following venue categories:", toString(list_venue_categories))) return(venue_name) } From e8aa1da6ccefc475d92a0df367a3c0ce887709e8 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Fri, 24 May 2024 23:34:50 +0200 Subject: [PATCH 29/36] edit render register html --- R/utils_render_reigster_html.r | 38 ++++++++++++++-------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index 926956f..3246c0e 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -89,21 +89,22 @@ set_html_postfix_hrefs <- function(filter, register_table_name) { set_href <- function(filter, register_table_name, href_type, filter_subcatetgories) { # Determine base path based on the resource type - result <- switch(href_type, + href_details <- switch(href_type, "csv_source" = list(base_url = "https://raw.githubusercontent.com/codecheckers/register/master/", ext = ".csv"), "searchable_csv" = list(base_url ="https://github.com/codecheckers/register/blob/master/", ext = ".csv"), - "json" = base_url <- list(base_url = "https://codecheck.org.uk/register/", ext = ".json"), - "md" = base_url <- list(base_url = "https://codecheck.org.uk/register/", ext = ".md") + "json" = list(base_url = "https://codecheck.org.uk/register/", ext = ".json"), + "md" = list(base_url = "https://codecheck.org.uk/register/", ext = ".md") ) - if (filter == "None") { - return(paste0(base_url, "register.", href_type)) + if (filter == "none") { + return(paste0(href_details$base_url, "register", href_details$ext)) } else if (filter == "venues") { venue_category <- determine_venue_category(register_table_name) venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", register_table_name))) - return(paste0(result$base_url, filter, "/", venue_category, "/", venue_name, "/register", result$ext)) + venue_name <- gsub(" ", "_", venue_name) + return(paste0(href_details$base_url, filter, "/", venue_category, "/", venue_name, "/register", href_details$ext)) } else { - return(paste0(result$base_url, filter, "/", register_table_name, "/register", result$ext)) + return(paste0(href_details$base_url, filter, "/", register_table_name, "/register", href_details$ext)) } } @@ -123,31 +124,22 @@ render_register_html <- function(filter, register_table, register_table_name){ output_dir <- get_output_dir(filter, register_table_name) # Capture the HTML output from a markdown file - # Check if .md already exists - if (!dir.exists(paste0(output_dir, "register.md"))){ - md_file_path <- paste0(output_dir, "register.md") - temp_md_used <- FALSE - } - - # If .md does not exist create a temp md file - else{ - render_register_md(filter, register_table, register_table_name, is_temp_file=TRUE) - md_file_path <- paste0(output_dir, "temp.md") - temp_md_used <- TRUE - } + # Note that the temp md file must be created even if a md exists because the register table + # now has different icons under "Repository" column + render_register_md(filter, register_table, register_table_name, is_temp_file=TRUE) + temp_md_file_path <- paste0(output_dir, "temp.md") + yaml_path <- normalizePath(file.path(getwd(), paste0(output_dir, "html_document.yml"))) # Render HTML from markdown rmarkdown::render( - input = md_file_path, + input = temp_md_file_path, output_file = "index.html", output_dir = output_dir, output_yaml = yaml_path ) - if (temp_md_used){ - file.remove(temp_file_path) - } + file.remove(temp_md_file_path) } render_register_htmls <- function(list_register_tables) { From 5319afbc6f291cb67d05c965f8a9de95102de035 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Sat, 25 May 2024 00:06:11 +0200 Subject: [PATCH 30/36] Add docstrings --- R/utils_create_filtered_register_csvs.R | 41 +++++++++++++----- R/utils_filter_register_table.R | 9 ++-- R/utils_render_register_json.R | 16 ++++++- R/utils_render_register_mds.R | 9 +++- R/utils_render_reigster_html.r | 57 ++++++++++++++++++++----- 5 files changed, 102 insertions(+), 30 deletions(-) diff --git a/R/utils_create_filtered_register_csvs.R b/R/utils_create_filtered_register_csvs.R index 37a0928..c087a43 100644 --- a/R/utils_create_filtered_register_csvs.R +++ b/R/utils_create_filtered_register_csvs.R @@ -1,7 +1,13 @@ -create_filtered_register_csvs <- function(filter_by, register, FILTER_SUB_GROUPS){ +#' Creates filtered register csv files +#' +#' Each csv file is saved in the appropriate output_dir. +#' +#' @param filter_by A vector of strings specifying the names of the columns to filter by. +#' @param register A dataframe representing the register data to be filtered. +create_filtered_register_csvs <- function(filter_by, register){ for (filter in filter_by){ - column_name <- determine_column_name(filter) + column_name <- determine_filter_column_name(filter) unique_values <- unique(register[[column_name]]) for (value in unique_values) { @@ -17,40 +23,53 @@ create_filtered_register_csvs <- function(filter_by, register, FILTER_SUB_GROUPS } } -determine_column_name <- function(filter) { - column_name <- switch(filter, +#' Determines the register table's column name to filter the data by. +#' +#' @param filter The filter name +#' @return The column name to filter by +determine_filter_column_name <- function(filter) { + filter_column_name <- switch(filter, "venues" = "Type", NULL # Default case is set to NULL ) - if (is.null(column_name)) { + if (is.null(filter_column_name)) { stop(paste("Filter", filter, "is not recognized.")) } - return(column_name) + return(filter_column_name) } -get_output_dir <- function(filter, value) { +#' Gets the output dir depending on the filter name and the value of the filtered column +#' +#' @param filter The filter name +#' @param column_value The value of the column the filter applies to +#' @return The directory to save files to +get_output_dir <- function(filter, column_value) { if (filter=="none"){ return(paste0("docs/")) } else if (filter=="venues"){ - venue_category <- determine_venue_category(value) + venue_category <- determine_venue_category(column_value) # In case the venue_category itself has no further subgroups we do not need subgroups - if (venue_category==tolower(value)){ + if (venue_category==tolower(column_value)){ return(paste0("docs/", filter, "/", gsub(" ", "_", venue_category), "/")) } # Removing the venue category to obtain the venue name and replace the brackets - venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", value))) + venue_name <- trimws(gsub("[()]", "", gsub(venue_category, "", column_value))) venue_name <- gsub(" ", "_", venue_name) return(paste0("docs/", filter, "/", venue_category, "/", venue_name, "/")) } else{ - return(paste0("docs/", filter, "/", gsub(" ", "_", tolower(value)), "/")) + return(paste0("docs/", filter, "/", gsub(" ", "_", tolower(column_value)), "/")) } } +#' Determines the venue category based on the venue_name +#' +#' @param venue_name The venue_name obtained from the "Type" column of the register +#' @return The venue category. If the venue does not belong to any category the venue_name is returned determine_venue_category <- function(venue_name){ list_venue_categories <- CONFIG$FILTER_SUB_GROUPS[["venues"]] for (category in list_venue_categories){ diff --git a/R/utils_filter_register_table.R b/R/utils_filter_register_table.R index 6bba2dc..3ebeb13 100644 --- a/R/utils_filter_register_table.R +++ b/R/utils_filter_register_table.R @@ -19,20 +19,19 @@ add_filtered_register_tables <- function(list_register_tables, register_table, f #' Each entry in the resulting list is the filtered register table with index corresponding to unique values in that column. #' #' @param register_table The register table -#' @param filter_column The column to filter by +#' @param filter The filter name #' @return A list of filtered register tables create_filtered_register_tables <- function(register_table, filter) { list_filtered_register_tables <- list() - column_name <- determine_column_name(filter) - unique_values <- unique(register_table[[column_name]]) + filter_column_name <- determine_filter_column_name(filter) + unique_values <- unique(register_table[[filter_column_name]]) # Loop over the unique values. We create a sorted table for each value for (value in unique_values) { - filtered_table <- register_table[register_table[[column_name]]==value, ] + filtered_table <- register_table[register_table[[filter_column_name]]==value, ] rownames(filtered_table) <- NULL # Reset row names to remove row numbers list_filtered_register_tables[[value]] <- filtered_table } - print(names(list_filtered_register_tables)) return(list_filtered_register_tables) } diff --git a/R/utils_render_register_json.R b/R/utils_render_register_json.R index 4dc7bb6..e15ba65 100644 --- a/R/utils_render_register_json.R +++ b/R/utils_render_register_json.R @@ -21,6 +21,10 @@ add_repository_links_json <- function(register_table) { return(register_table) } +#' Set "Title" and "Paper reference" columns and values to the register_table +#' +#' @param register_table The register table +#' @return Updated register table including "Title" and "Paper reference" columns set_paper_title_references <- function(register_table){ titles <- c() references <- c() @@ -43,6 +47,11 @@ set_paper_title_references <- function(register_table){ return(register_table) } +#' Renders register json for a single register_table +#' +#' @param filter The filter +#' @param register_table The register table +#' @param register_table_name The register table name render_register_json <- function(filter, register_table, register_table_name) { register_table <- add_repository_links_json(register_table) @@ -84,7 +93,7 @@ render_register_json <- function(filter, register_table, register_table_name) { jsonlite::write_json( list( - source = set_href(filter, register_table_name, "json"), + source = generate_href(filter, register_table_name, "json"), cert_count = nrow(register_table) # TODO count conferences, preprints, # journals, etc. @@ -95,8 +104,11 @@ render_register_json <- function(filter, register_table, register_table_name) { ) } +#' Renders register jsons for a list of register tables +#' +#' @param list_register_table List of register tables render_register_jsons <- function(list_register_tables){ - # Loop over each register table + # Loop over each register table and render a json for (filter in names(list_register_tables)){ for (register_table_name in names(list_register_tables[[filter]])) { register_table <- list_register_tables[[filter]][[register_table_name]] diff --git a/R/utils_render_register_mds.R b/R/utils_render_register_mds.R index 51d44a4..599bfde 100644 --- a/R/utils_render_register_mds.R +++ b/R/utils_render_register_mds.R @@ -69,7 +69,11 @@ add_repository_links_md <- function(register_table) { return(register_table) } -# Helper function to process each table and convert it to markdown format +#' Renders register md for a single register_table +#' +#' @param filter The filter +#' @param register_table The register table +#' @param register_table_name The register table name render_register_md <- function(filter, register_table, register_table_name, is_temp_file=FALSE) { # Fill in the content md_table <- load_md_template(CONFIG$MD_TEMPLATE) @@ -102,6 +106,9 @@ render_register_md <- function(filter, register_table, register_table_name, is_t writeLines(md_table, output_dir) } +#' Renders register mds for a list of register tables +#' +#' @param list_register_table List of register tables render_register_mds <- function(list_register_tables){ for (filter in names(list_register_tables)){ for (register_table_name in names(list_register_tables[[filter]])){ diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index 3246c0e..f90f27b 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -32,7 +32,8 @@ add_repository_links_html <- function(register_table) { #' Dynamically generates a html_document.yml with the full paths to the index header, prefix #' and postfix.html files. #' -#' @return None +#' @param filter The filter name +#' @param register_table_name The register table name generate_html_document_yml <- function(filter, register_table_name) { dir <- paste0(getwd(), "/", get_output_dir(filter, register_table_name)) @@ -52,8 +53,12 @@ generate_html_document_yml <- function(filter, register_table_name) { writeLines(yaml_content, paste0(dir, "html_document.yml")) } +#' Dynamically generates the index_postfix.html from a template file +#' +#' @param filter The filter name +#' @param register_table_name The register table name create_index_postfix_html <- function(filter, register_table_name){ - hrefs <- set_html_postfix_hrefs(filter, register_table_name) + hrefs <- generate_html_postfix_hrefs(filter, register_table_name) # Using the index_postfix_template postfix_template <- readLines(paste0(getwd(), "/docs/index_postfix_template.html"), warn = FALSE) @@ -62,6 +67,10 @@ create_index_postfix_html <- function(filter, register_table_name){ writeLines(output, paste0(get_output_dir(filter, register_table_name), "index_postfix.html")) } +#' Dynamically generates the index_prefix.html from a template file +#' +#' @param filter The filter name +#' @param register_table_name The register table name create_index_prefix_html <- function(filter, register_table_name){ # Using the index_prefix_template prefix_template <- readLines(paste0(getwd(), "/docs/index_prefix_template.html"), warn = FALSE) @@ -69,6 +78,10 @@ create_index_prefix_html <- function(filter, register_table_name){ writeLines(prefix_template, paste0(get_output_dir(filter, register_table_name), "index_prefix.html")) } +#' Dynamically generates the index_header.html from a template file +#' +#' @param filter The filter name +#' @param register_table_name The register table name create_index_header_html <- function(filter, register_table_name){ # Using the index_header_template header_template <- readLines(paste0(getwd(), "/docs/index_header_template.html"), warn = FALSE) @@ -76,18 +89,28 @@ create_index_header_html <- function(filter, register_table_name){ writeLines(header_template, paste0(get_output_dir(filter, register_table_name), "index_header.html")) } -set_html_postfix_hrefs <- function(filter, register_table_name) { +#' Generates the hrefs to set in the postfix.html file. +#' +#' @param filter The filter name +#' @param register_table_name The register table name +generate_html_postfix_hrefs <- function(filter, register_table_name) { hrefs <- list( - csv_source_href = set_href(filter, register_table_name, "csv_source"), - searchable_csv_href = set_href(filter, register_table_name, "searchable_csv"), - json_href = set_href(filter, register_table_name, "json"), - md_href = set_href(filter, register_table_name, "md") + csv_source_href = generate_href(filter, register_table_name, "csv_source"), + searchable_csv_href = generate_href(filter, register_table_name, "searchable_csv"), + json_href = generate_href(filter, register_table_name, "json"), + md_href = generate_href(filter, register_table_name, "md") ) return(hrefs) } -set_href <- function(filter, register_table_name, href_type, filter_subcatetgories) { - +#' Generate full href for for different href types. +#' +#' @param filter The filter name +#' @param register_table_name The register table name +#' @param href_type The href type (e.g., 'csv_source', 'searchable_csv', 'json', 'md') +#' +#' @return String representing the full URL to access the specified resource +generate_href <- function(filter, register_table_name, href_type) { # Determine base path based on the resource type href_details <- switch(href_type, "csv_source" = list(base_url = "https://raw.githubusercontent.com/codecheckers/register/master/", ext = ".csv"), @@ -108,18 +131,27 @@ set_href <- function(filter, register_table_name, href_type, filter_subcatetgori } } -create_section_htmls <- function(filter, register_table_name) { +#' Creates html files for each index section- the index postfix, prefix and the header +#' +#' @param filter The filter name +#' @param register_table_name The register table name +create_index_section_files <- function(filter, register_table_name) { create_index_postfix_html(filter, register_table_name) create_index_prefix_html(filter, register_table_name) create_index_header_html(filter, register_table_name) } +#' Renders register html for a single register_table +#' +#' @param filter The filter +#' @param register_table The register table +#' @param register_table_name The register table name render_register_html <- function(filter, register_table, register_table_name){ # Add icons to the Repository column for HTML output, use a copy of the register.md register_table <- add_repository_links_html(register_table) # Dynamically create the index header, prefix and postfix files - create_section_htmls(filter, register_table_name) + create_index_section_files(filter, register_table_name) generate_html_document_yml(filter, register_table_name) output_dir <- get_output_dir(filter, register_table_name) @@ -142,6 +174,9 @@ render_register_html <- function(filter, register_table, register_table_name){ file.remove(temp_md_file_path) } +#' Renders register htmls for a list of register tables +#' +#' @param list_register_table List of register tables render_register_htmls <- function(list_register_tables) { # Loop over each register table for (filter in names(list_register_tables)){ From a0bdf9ffd290e8d5dacee12145be573edf391ac2 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Sat, 25 May 2024 00:37:25 +0200 Subject: [PATCH 31/36] Run roxygen2 --- NAMESPACE | 1 - man/add_filtered_register_tables.Rd | 23 +++++++++++++++++++ man/add_repository_links_html.Rd | 2 +- man/add_repository_links_json.Rd | 2 +- man/add_repository_links_md.Rd | 2 +- man/adjust_markdown_title.Rd | 8 +++---- man/create_filtered_register_csvs.Rd | 16 +++++++++++++ man/create_filtered_register_tables.Rd | 21 +++++++++++++++++ man/create_index_header_html.Rd | 16 +++++++++++++ man/create_index_postfix_html.Rd | 16 +++++++++++++ man/create_index_prefix_html.Rd | 16 +++++++++++++ man/create_index_section_files.Rd | 16 +++++++++++++ ...reate_list_venue_sorted_register_tables.Rd | 21 ----------------- man/determine_filter_column_name.Rd | 17 ++++++++++++++ man/determine_output_file_directory.Rd | 17 -------------- man/determine_venue_category.Rd | 17 ++++++++++++++ man/generate_href.Rd | 21 +++++++++++++++++ man/generate_html_document_yml.Rd | 10 ++++---- man/generate_html_postfix_hrefs.Rd | 16 +++++++++++++ man/get_output_dir.Rd | 19 +++++++++++++++ ..._table_template.Rd => load_md_template.Rd} | 8 +++---- man/register_render.Rd | 2 +- man/render_register_html.Rd | 17 ++++++-------- man/render_register_htmls.Rd | 14 +++++++++++ man/render_register_json.Rd | 15 ++++++------ man/render_register_jsons.Rd | 14 +++++++++++ man/render_register_md.Rd | 22 ++++++++++-------- man/render_register_mds.Rd | 14 +++++++++++ man/set_paper_title_references.Rd | 17 ++++++++++++++ 29 files changed, 318 insertions(+), 82 deletions(-) create mode 100644 man/add_filtered_register_tables.Rd create mode 100644 man/create_filtered_register_csvs.Rd create mode 100644 man/create_filtered_register_tables.Rd create mode 100644 man/create_index_header_html.Rd create mode 100644 man/create_index_postfix_html.Rd create mode 100644 man/create_index_prefix_html.Rd create mode 100644 man/create_index_section_files.Rd delete mode 100644 man/create_list_venue_sorted_register_tables.Rd create mode 100644 man/determine_filter_column_name.Rd delete mode 100644 man/determine_output_file_directory.Rd create mode 100644 man/determine_venue_category.Rd create mode 100644 man/generate_href.Rd create mode 100644 man/generate_html_postfix_hrefs.Rd create mode 100644 man/get_output_dir.Rd rename man/{load_markdown_table_template.Rd => load_md_template.Rd} (59%) create mode 100644 man/render_register_htmls.Rd create mode 100644 man/render_register_jsons.Rd create mode 100644 man/render_register_mds.Rd create mode 100644 man/set_paper_title_references.Rd diff --git a/NAMESPACE b/NAMESPACE index db3d082..3b57eda 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -40,4 +40,3 @@ importFrom(xtable,xtable) importFrom(yaml,read_yaml) importFrom(yaml,yaml.load) importFrom(zen4R,ZenodoRecord) -importFrom(whisker, whisker.render) diff --git a/man/add_filtered_register_tables.Rd b/man/add_filtered_register_tables.Rd new file mode 100644 index 0000000..6e49d13 --- /dev/null +++ b/man/add_filtered_register_tables.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_filter_register_table.R +\name{add_filtered_register_tables} +\alias{add_filtered_register_tables} +\title{Function for adding filtered register tables to a list based on specified filters. +Each entry in the resulting list is a filtered register table by the filter type provided.} +\usage{ +add_filtered_register_tables(list_register_tables, register_table, filter_by) +} +\arguments{ +\item{list_register_tables}{A list to store the filtered tables} + +\item{register_table}{The register table to filter} + +\item{filter_by}{A vector of strings specifying the filter types} +} +\value{ +A list of filtered register tables +} +\description{ +Function for adding filtered register tables to a list based on specified filters. +Each entry in the resulting list is a filtered register table by the filter type provided. +} diff --git a/man/add_repository_links_html.Rd b/man/add_repository_links_html.Rd index 8e3780a..8ebbbef 100644 --- a/man/add_repository_links_html.Rd +++ b/man/add_repository_links_html.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_reigster_html.r \name{add_repository_links_html} \alias{add_repository_links_html} \title{Function for adding repository links in the register table for the creation of the html file.} diff --git a/man/add_repository_links_json.Rd b/man/add_repository_links_json.Rd index f92adbd..dca3523 100644 --- a/man/add_repository_links_json.Rd +++ b/man/add_repository_links_json.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_register_json.R \name{add_repository_links_json} \alias{add_repository_links_json} \title{Function for adding repository links in the register table for the creation of the json file.} diff --git a/man/add_repository_links_md.Rd b/man/add_repository_links_md.Rd index b495b43..d4903b2 100644 --- a/man/add_repository_links_md.Rd +++ b/man/add_repository_links_md.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_register_mds.R \name{add_repository_links_md} \alias{add_repository_links_md} \title{Function for adding repository links in the register table for the creation of the markdown file.} diff --git a/man/adjust_markdown_title.Rd b/man/adjust_markdown_title.Rd index 2ec84e1..48dc5ff 100644 --- a/man/adjust_markdown_title.Rd +++ b/man/adjust_markdown_title.Rd @@ -1,15 +1,15 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_register_mds.R \name{adjust_markdown_title} \alias{adjust_markdown_title} \title{Function to adjust the markdown title based on the specific register table name.} \usage{ -adjust_markdown_title(markdown_table, register_table_name) +adjust_markdown_title(md_table, register_table_name) } \arguments{ -\item{markdown_table}{The markdown template where the title needs to be adjusted} - \item{register_table_name}{The name of the register table} + +\item{markdown_table}{The markdown template where the title needs to be adjusted} } \value{ The modified markdown table diff --git a/man/create_filtered_register_csvs.Rd b/man/create_filtered_register_csvs.Rd new file mode 100644 index 0000000..33c9437 --- /dev/null +++ b/man/create_filtered_register_csvs.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_create_filtered_register_csvs.R +\name{create_filtered_register_csvs} +\alias{create_filtered_register_csvs} +\title{Creates filtered register csv files} +\usage{ +create_filtered_register_csvs(filter_by, register) +} +\arguments{ +\item{filter_by}{A vector of strings specifying the names of the columns to filter by.} + +\item{register}{A dataframe representing the register data to be filtered.} +} +\description{ +Each csv file is saved in the appropriate output_dir. +} diff --git a/man/create_filtered_register_tables.Rd b/man/create_filtered_register_tables.Rd new file mode 100644 index 0000000..72c275e --- /dev/null +++ b/man/create_filtered_register_tables.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_filter_register_table.R +\name{create_filtered_register_tables} +\alias{create_filtered_register_tables} +\title{Function for creating a list of register tables that is filtered based on the filter type. +Each entry in the resulting list is the filtered register table with index corresponding to unique values in that column.} +\usage{ +create_filtered_register_tables(register_table, filter) +} +\arguments{ +\item{register_table}{The register table} + +\item{filter}{The filter name} +} +\value{ +A list of filtered register tables +} +\description{ +Function for creating a list of register tables that is filtered based on the filter type. +Each entry in the resulting list is the filtered register table with index corresponding to unique values in that column. +} diff --git a/man/create_index_header_html.Rd b/man/create_index_header_html.Rd new file mode 100644 index 0000000..f84a5da --- /dev/null +++ b/man/create_index_header_html.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{create_index_header_html} +\alias{create_index_header_html} +\title{Dynamically generates the index_header.html from a template file} +\usage{ +create_index_header_html(filter, register_table_name) +} +\arguments{ +\item{filter}{The filter name} + +\item{register_table_name}{The register table name} +} +\description{ +Dynamically generates the index_header.html from a template file +} diff --git a/man/create_index_postfix_html.Rd b/man/create_index_postfix_html.Rd new file mode 100644 index 0000000..7c12ec4 --- /dev/null +++ b/man/create_index_postfix_html.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{create_index_postfix_html} +\alias{create_index_postfix_html} +\title{Dynamically generates the index_postfix.html from a template file} +\usage{ +create_index_postfix_html(filter, register_table_name) +} +\arguments{ +\item{filter}{The filter name} + +\item{register_table_name}{The register table name} +} +\description{ +Dynamically generates the index_postfix.html from a template file +} diff --git a/man/create_index_prefix_html.Rd b/man/create_index_prefix_html.Rd new file mode 100644 index 0000000..e788496 --- /dev/null +++ b/man/create_index_prefix_html.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{create_index_prefix_html} +\alias{create_index_prefix_html} +\title{Dynamically generates the index_prefix.html from a template file} +\usage{ +create_index_prefix_html(filter, register_table_name) +} +\arguments{ +\item{filter}{The filter name} + +\item{register_table_name}{The register table name} +} +\description{ +Dynamically generates the index_prefix.html from a template file +} diff --git a/man/create_index_section_files.Rd b/man/create_index_section_files.Rd new file mode 100644 index 0000000..032d7c2 --- /dev/null +++ b/man/create_index_section_files.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{create_index_section_files} +\alias{create_index_section_files} +\title{Creates html files for each index section- the index postfix, prefix and the header} +\usage{ +create_index_section_files(filter, register_table_name) +} +\arguments{ +\item{filter}{The filter name} + +\item{register_table_name}{The register table name} +} +\description{ +Creates html files for each index section- the index postfix, prefix and the header +} diff --git a/man/create_list_venue_sorted_register_tables.Rd b/man/create_list_venue_sorted_register_tables.Rd deleted file mode 100644 index 1820983..0000000 --- a/man/create_list_venue_sorted_register_tables.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_register_sort.R -\name{create_list_venue_sorted_register_tables} -\alias{create_list_venue_sorted_register_tables} -\title{Function for creating a list of register tables that is sorted by venue. -Each entry in the resulting list uses a key that combines 'venue_' with the venue name, -and maps to a corresponding sorted register table.} -\usage{ -create_list_venue_sorted_register_tables(register_table) -} -\arguments{ -\item{register_table}{The register table} -} -\value{ -A list of venue sorted register tables. -} -\description{ -Function for creating a list of register tables that is sorted by venue. -Each entry in the resulting list uses a key that combines 'venue_' with the venue name, -and maps to a corresponding sorted register table. -} diff --git a/man/determine_filter_column_name.Rd b/man/determine_filter_column_name.Rd new file mode 100644 index 0000000..fd8acaf --- /dev/null +++ b/man/determine_filter_column_name.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_create_filtered_register_csvs.R +\name{determine_filter_column_name} +\alias{determine_filter_column_name} +\title{Determines the register table's column name to filter the data by.} +\usage{ +determine_filter_column_name(filter) +} +\arguments{ +\item{filter}{The filter name} +} +\value{ +The column name to filter by +} +\description{ +Determines the register table's column name to filter the data by. +} diff --git a/man/determine_output_file_directory.Rd b/man/determine_output_file_directory.Rd deleted file mode 100644 index bc626ec..0000000 --- a/man/determine_output_file_directory.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R -\name{determine_output_file_directory} -\alias{determine_output_file_directory} -\title{Function to determine the appropriate output file directory based on the register table name.} -\usage{ -determine_output_file_directory(register_table_name) -} -\arguments{ -\item{register_table_name}{The name of the register table} -} -\value{ -The path to the output file directory -} -\description{ -Function to determine the appropriate output file directory based on the register table name. -} diff --git a/man/determine_venue_category.Rd b/man/determine_venue_category.Rd new file mode 100644 index 0000000..cf0f369 --- /dev/null +++ b/man/determine_venue_category.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_create_filtered_register_csvs.R +\name{determine_venue_category} +\alias{determine_venue_category} +\title{Determines the venue category based on the venue_name} +\usage{ +determine_venue_category(venue_name) +} +\arguments{ +\item{venue_name}{The venue_name obtained from the "Type" column of the register} +} +\value{ +The venue category. If the venue does not belong to any category the venue_name is returned +} +\description{ +Determines the venue category based on the venue_name +} diff --git a/man/generate_href.Rd b/man/generate_href.Rd new file mode 100644 index 0000000..05e8082 --- /dev/null +++ b/man/generate_href.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{generate_href} +\alias{generate_href} +\title{Generate full href for for different href types.} +\usage{ +generate_href(filter, register_table_name, href_type) +} +\arguments{ +\item{filter}{The filter name} + +\item{register_table_name}{The register table name} + +\item{href_type}{The href type (e.g., 'csv_source', 'searchable_csv', 'json', 'md')} +} +\value{ +String representing the full URL to access the specified resource +} +\description{ +Generate full href for for different href types. +} diff --git a/man/generate_html_document_yml.Rd b/man/generate_html_document_yml.Rd index 60a3e5f..f11c6b1 100644 --- a/man/generate_html_document_yml.Rd +++ b/man/generate_html_document_yml.Rd @@ -1,14 +1,16 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_reigster_html.r \name{generate_html_document_yml} \alias{generate_html_document_yml} \title{Dynamically generates a html_document.yml with the full paths to the index header, prefix and postfix.html files.} \usage{ -generate_html_document_yml() +generate_html_document_yml(filter, register_table_name) } -\value{ -None +\arguments{ +\item{filter}{The filter name} + +\item{register_table_name}{The register table name} } \description{ Dynamically generates a html_document.yml with the full paths to the index header, prefix diff --git a/man/generate_html_postfix_hrefs.Rd b/man/generate_html_postfix_hrefs.Rd new file mode 100644 index 0000000..b08227d --- /dev/null +++ b/man/generate_html_postfix_hrefs.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{generate_html_postfix_hrefs} +\alias{generate_html_postfix_hrefs} +\title{Generates the hrefs to set in the postfix.html file.} +\usage{ +generate_html_postfix_hrefs(filter, register_table_name) +} +\arguments{ +\item{filter}{The filter name} + +\item{register_table_name}{The register table name} +} +\description{ +Generates the hrefs to set in the postfix.html file. +} diff --git a/man/get_output_dir.Rd b/man/get_output_dir.Rd new file mode 100644 index 0000000..2cf209b --- /dev/null +++ b/man/get_output_dir.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_create_filtered_register_csvs.R +\name{get_output_dir} +\alias{get_output_dir} +\title{Gets the output dir depending on the filter name and the value of the filtered column} +\usage{ +get_output_dir(filter, column_value) +} +\arguments{ +\item{filter}{The filter name} + +\item{column_value}{The value of the column the filter applies to} +} +\value{ +The directory to save files to +} +\description{ +Gets the output dir depending on the filter name and the value of the filtered column +} diff --git a/man/load_markdown_table_template.Rd b/man/load_md_template.Rd similarity index 59% rename from man/load_markdown_table_template.Rd rename to man/load_md_template.Rd index 671108e..a2d45ae 100644 --- a/man/load_markdown_table_template.Rd +++ b/man/load_md_template.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R -\name{load_markdown_table_template} -\alias{load_markdown_table_template} +% Please edit documentation in R/utils_render_register_mds.R +\name{load_md_template} +\alias{load_md_template} \title{Function to load the markdown table} \usage{ -load_markdown_table_template(template_path) +load_md_template(template_path) } \arguments{ \item{template_path}{The path to the markdown template} diff --git a/man/register_render.Rd b/man/register_render.Rd index 2eb6f96..d46c2ac 100644 --- a/man/register_render.Rd +++ b/man/register_render.Rd @@ -6,7 +6,7 @@ \usage{ register_render( register = read.csv("register.csv", as.is = TRUE), - sort_by = c("venue"), + filter_by = c("venues"), outputs = c("html", "md", "json") ) } diff --git a/man/render_register_html.Rd b/man/render_register_html.Rd index 5463ad8..8b48dae 100644 --- a/man/render_register_html.Rd +++ b/man/render_register_html.Rd @@ -1,21 +1,18 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_reigster_html.r \name{render_register_html} \alias{render_register_html} -\title{Function for rendering the register html file. -The html file is rendered from the markdown file.} +\title{Renders register html for a single register_table} \usage{ -render_register_html(list_register_tables, md_columns_widths) +render_register_html(filter, register_table, register_table_name) } \arguments{ -\item{md_columns_widths}{The column widths for the markdown file} +\item{filter}{The filter} \item{register_table}{The register table} -} -\value{ -None + +\item{register_table_name}{The register table name} } \description{ -Function for rendering the register html file. -The html file is rendered from the markdown file. +Renders register html for a single register_table } diff --git a/man/render_register_htmls.Rd b/man/render_register_htmls.Rd new file mode 100644 index 0000000..26ac4c8 --- /dev/null +++ b/man/render_register_htmls.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{render_register_htmls} +\alias{render_register_htmls} +\title{Renders register htmls for a list of register tables} +\usage{ +render_register_htmls(list_register_tables) +} +\arguments{ +\item{list_register_table}{List of register tables} +} +\description{ +Renders register htmls for a list of register tables +} diff --git a/man/render_register_json.Rd b/man/render_register_json.Rd index 84161ce..a84972f 100644 --- a/man/render_register_json.Rd +++ b/man/render_register_json.Rd @@ -1,19 +1,18 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_register_json.R \name{render_register_json} \alias{render_register_json} -\title{Function for rendering the register json file.} +\title{Renders register json for a single register_table} \usage{ -render_register_json(list_register_tables, register) +render_register_json(filter, register_table, register_table_name) } \arguments{ -\item{register}{The register from the register.csv file} +\item{filter}{The filter} \item{register_table}{The register table} -} -\value{ -None + +\item{register_table_name}{The register table name} } \description{ -Function for rendering the register json file. +Renders register json for a single register_table } diff --git a/man/render_register_jsons.Rd b/man/render_register_jsons.Rd new file mode 100644 index 0000000..c3fd259 --- /dev/null +++ b/man/render_register_jsons.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register_json.R +\name{render_register_jsons} +\alias{render_register_jsons} +\title{Renders register jsons for a list of register tables} +\usage{ +render_register_jsons(list_register_tables) +} +\arguments{ +\item{list_register_table}{List of register tables} +} +\description{ +Renders register jsons for a list of register tables +} diff --git a/man/render_register_md.Rd b/man/render_register_md.Rd index 230f260..c8026ab 100644 --- a/man/render_register_md.Rd +++ b/man/render_register_md.Rd @@ -1,19 +1,23 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils_render_register.R +% Please edit documentation in R/utils_render_register_mds.R \name{render_register_md} \alias{render_register_md} -\title{Render Markdown files for register tables.} +\title{Renders register md for a single register_table} \usage{ -render_register_md(list_register_tables, md_columns_widths) +render_register_md( + filter, + register_table, + register_table_name, + is_temp_file = FALSE +) } \arguments{ -\item{list_register_tables}{A list of register tables} +\item{filter}{The filter} -\item{md_columns_widths}{A string specifying the Markdown formatting for column widths.} -} -\value{ -None +\item{register_table}{The register table} + +\item{register_table_name}{The register table name} } \description{ -Render Markdown files for register tables. +Renders register md for a single register_table } diff --git a/man/render_register_mds.Rd b/man/render_register_mds.Rd new file mode 100644 index 0000000..b9f429d --- /dev/null +++ b/man/render_register_mds.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register_mds.R +\name{render_register_mds} +\alias{render_register_mds} +\title{Renders register mds for a list of register tables} +\usage{ +render_register_mds(list_register_tables) +} +\arguments{ +\item{list_register_table}{List of register tables} +} +\description{ +Renders register mds for a list of register tables +} diff --git a/man/set_paper_title_references.Rd b/man/set_paper_title_references.Rd new file mode 100644 index 0000000..260bf2f --- /dev/null +++ b/man/set_paper_title_references.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_register_json.R +\name{set_paper_title_references} +\alias{set_paper_title_references} +\title{Set "Title" and "Paper reference" columns and values to the register_table} +\usage{ +set_paper_title_references(register_table) +} +\arguments{ +\item{register_table}{The register table} +} +\value{ +Updated register table including "Title" and "Paper reference" columns +} +\description{ +Set "Title" and "Paper reference" columns and values to the register_table +} From c9fe776f89601be242f9cbe886603d31a3504638 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Sat, 25 May 2024 00:43:45 +0200 Subject: [PATCH 32/36] add missing importfrom --- NAMESPACE | 1 + R/utils_render_reigster_html.r | 2 ++ 2 files changed, 3 insertions(+) diff --git a/NAMESPACE b/NAMESPACE index 3b57eda..ed758bf 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -36,6 +36,7 @@ importFrom(stringr,str_replace_all) importFrom(utils,capture.output) importFrom(utils,read.csv) importFrom(utils,tail) +importFrom(whisker,whisker.render) importFrom(xtable,xtable) importFrom(yaml,read_yaml) importFrom(yaml,yaml.load) diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index f90f27b..d5f2878 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -57,6 +57,8 @@ generate_html_document_yml <- function(filter, register_table_name) { #' #' @param filter The filter name #' @param register_table_name The register table name +#' +#' @importFrom whisker whisker.render create_index_postfix_html <- function(filter, register_table_name){ hrefs <- generate_html_postfix_hrefs(filter, register_table_name) From dc09680eff1724a0d98cbb3de69c69979acf7fbc Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Sat, 25 May 2024 01:26:53 +0200 Subject: [PATCH 33/36] Fixed md links --- R/utils_filter_register_table.R | 1 - R/utils_render_register_mds.R | 9 +++++++-- R/utils_render_reigster_html.r | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/R/utils_filter_register_table.R b/R/utils_filter_register_table.R index 3ebeb13..7c3ca16 100644 --- a/R/utils_filter_register_table.R +++ b/R/utils_filter_register_table.R @@ -11,7 +11,6 @@ add_filtered_register_tables <- function(list_register_tables, register_table, f list_register_tables[[filter]] <- create_filtered_register_tables(register_table, filter) } - list_1 <- unlist(list_register_tables, recursive = TRUE) return(list_register_tables) } diff --git a/R/utils_render_register_mds.R b/R/utils_render_register_mds.R index 599bfde..14e60e7 100644 --- a/R/utils_render_register_mds.R +++ b/R/utils_render_register_mds.R @@ -74,7 +74,11 @@ add_repository_links_md <- function(register_table) { #' @param filter The filter #' @param register_table The register table #' @param register_table_name The register table name -render_register_md <- function(filter, register_table, register_table_name, is_temp_file=FALSE) { +render_register_md <- function(filter, register_table, register_table_name, for_html_file=FALSE) { + # If we are rendering md for html file, we do not need to add repo links + if (for_html_file == FALSE){ + register_table <- add_repository_links_md(register_table) + } # Fill in the content md_table <- load_md_template(CONFIG$MD_TEMPLATE) @@ -95,7 +99,8 @@ render_register_md <- function(filter, register_table, register_table_name, is_t dir.create(output_dir, recursive = TRUE, showWarnings = TRUE) } - if (is_temp_file){ + # If rendering md for html file we create a temp file + if (for_html_file){ output_dir <- paste0(output_dir, "temp.md") } diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index d5f2878..4c77d6d 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -160,7 +160,7 @@ render_register_html <- function(filter, register_table, register_table_name){ # Capture the HTML output from a markdown file # Note that the temp md file must be created even if a md exists because the register table # now has different icons under "Repository" column - render_register_md(filter, register_table, register_table_name, is_temp_file=TRUE) + render_register_md(filter, register_table, register_table_name, for_html_file=TRUE) temp_md_file_path <- paste0(output_dir, "temp.md") yaml_path <- normalizePath(file.path(getwd(), paste0(output_dir, "html_document.yml"))) From aeef50e1be9b508ae3d05778fcc3bf24a0478104 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Wed, 19 Jun 2024 14:54:59 +0200 Subject: [PATCH 34/36] All html files now share one libs folder --- R/utils_render_register_mds.R | 2 ++ man/edit_html_lib_paths.Rd | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 man/edit_html_lib_paths.Rd diff --git a/R/utils_render_register_mds.R b/R/utils_render_register_mds.R index 14e60e7..66992cf 100644 --- a/R/utils_render_register_mds.R +++ b/R/utils_render_register_mds.R @@ -74,6 +74,8 @@ add_repository_links_md <- function(register_table) { #' @param filter The filter #' @param register_table The register table #' @param register_table_name The register table name +#' @param for_html_file Flag for whether we are rendering register md for html file. +#' Set to FALSE by default. If TRUE, no repo links are added to the repository table. render_register_md <- function(filter, register_table, register_table_name, for_html_file=FALSE) { # If we are rendering md for html file, we do not need to add repo links if (for_html_file == FALSE){ diff --git a/man/edit_html_lib_paths.Rd b/man/edit_html_lib_paths.Rd new file mode 100644 index 0000000..b4df9df --- /dev/null +++ b/man/edit_html_lib_paths.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils_render_reigster_html.r +\name{edit_html_lib_paths} +\alias{edit_html_lib_paths} +\title{Loads a html file and replaces the libs path in the html file to the libs folder in "docs/libs" +This is done so all html files can share one libs folder.} +\usage{ +edit_html_lib_paths(html_file_path) +} +\arguments{ +\item{html_file_path}{The path to the html file that needs to be edited.} +} +\description{ +Loads a html file and replaces the libs path in the html file to the libs folder in "docs/libs" +This is done so all html files can share one libs folder. +} From 1273653666c274fd28f795051ad7e01c4f823911 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Wed, 19 Jun 2024 14:55:23 +0200 Subject: [PATCH 35/36] Update render register md documentation --- R/utils_render_reigster_html.r | 36 ++++++++++++++++++++++++++++++++++ man/render_register_md.Rd | 5 ++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index 4c77d6d..ba7a074 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -174,6 +174,16 @@ render_register_html <- function(filter, register_table, register_table_name){ ) file.remove(temp_md_file_path) + + # For all registered tables besides the original we change the html + # file so that the path to the libs folder refers to the libs folder "docs/libs". + # This is done to remove duplicates of "libs" folders. + if (register_table_name != "original"){ + html_file_path <- paste0(output_dir, "index.html") + edit_html_lib_paths(html_file_path) + # Deleting the libs folder after changing the html lib path + unlink(paste0(output_dir, "/libs"), recursive = TRUE) + } } #' Renders register htmls for a list of register tables @@ -188,3 +198,29 @@ render_register_htmls <- function(list_register_tables) { } } } + +#' Loads a html file and replaces the libs path in the html file to the libs folder in "docs/libs" +#' This is done so all html files can share one libs folder. +#' +#' @param html_file_path The path to the html file that needs to be edited. +edit_html_lib_paths <- function(html_file_path) { + + path_components <- strsplit(output_dir, "/")[[1]] + # The count of dirs one needs to move up to reach docs/libs. "-1" is used to exclude going up "docs" + # folder itself + count_dir_up <- length(path_components) - 1 + up_dirs_string <- rep("../", count_dir_up) + + # Relative path to the "docs/libs" folder + path_to_base <- paste0(up_dirs_string, collapse = "") + relative_libs_dir <- paste0(path_to_base, "libs/") + + # Read the HTML file lines into a vector + html_lines <- readLines(paste0(output_dir, "index.html")) + + # Replace lines containing "=libs/" with the appropriate relative path to "docs/libs" + edited_lines <- gsub('="libs/', paste0('="', relative_libs_dir), html_lines) + + # Write the edited lines back to the file + writeLines(edited_lines, html_file_path) +} \ No newline at end of file diff --git a/man/render_register_md.Rd b/man/render_register_md.Rd index c8026ab..4f208de 100644 --- a/man/render_register_md.Rd +++ b/man/render_register_md.Rd @@ -8,7 +8,7 @@ render_register_md( filter, register_table, register_table_name, - is_temp_file = FALSE + for_html_file = FALSE ) } \arguments{ @@ -17,6 +17,9 @@ render_register_md( \item{register_table}{The register table} \item{register_table_name}{The register table name} + +\item{for_html_file}{Flag for whether we are rendering register md for html file. +Set to FALSE by default. If TRUE, no repo links are added to the repository table.} } \description{ Renders register md for a single register_table From 6f63ccc27a3f266c96f10095ab8b5321477b6071 Mon Sep 17 00:00:00 2001 From: angelina-momin Date: Wed, 19 Jun 2024 15:05:31 +0200 Subject: [PATCH 36/36] Running without bugs --- R/utils_render_reigster_html.r | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/R/utils_render_reigster_html.r b/R/utils_render_reigster_html.r index ba7a074..4d9e4e3 100644 --- a/R/utils_render_reigster_html.r +++ b/R/utils_render_reigster_html.r @@ -205,10 +205,10 @@ render_register_htmls <- function(list_register_tables) { #' @param html_file_path The path to the html file that needs to be edited. edit_html_lib_paths <- function(html_file_path) { - path_components <- strsplit(output_dir, "/")[[1]] - # The count of dirs one needs to move up to reach docs/libs. "-1" is used to exclude going up "docs" - # folder itself - count_dir_up <- length(path_components) - 1 + path_components <- strsplit(html_file_path, "/")[[1]] + # The count of dirs one needs to move up to reach "docs" folder. "-2" is used because both "docs" + # "index.html" are elements in path_components. + count_dir_up <- length(path_components) - 2 up_dirs_string <- rep("../", count_dir_up) # Relative path to the "docs/libs" folder @@ -216,7 +216,7 @@ edit_html_lib_paths <- function(html_file_path) { relative_libs_dir <- paste0(path_to_base, "libs/") # Read the HTML file lines into a vector - html_lines <- readLines(paste0(output_dir, "index.html")) + html_lines <- readLines(html_file_path) # Replace lines containing "=libs/" with the appropriate relative path to "docs/libs" edited_lines <- gsub('="libs/', paste0('="', relative_libs_dir), html_lines)