Skip to content

Commit

Permalink
Add docstrings
Browse files Browse the repository at this point in the history
  • Loading branch information
angelina-momin committed May 24, 2024
1 parent e8aa1da commit 5319afb
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 30 deletions.
41 changes: 30 additions & 11 deletions R/utils_create_filtered_register_csvs.R
Original file line number Diff line number Diff line change
@@ -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) {
Expand All @@ -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){
Expand Down
9 changes: 4 additions & 5 deletions R/utils_filter_register_table.R
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
16 changes: 14 additions & 2 deletions R/utils_render_register_json.R
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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)

Expand Down Expand Up @@ -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.
Expand All @@ -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]]
Expand Down
9 changes: 8 additions & 1 deletion R/utils_render_register_mds.R
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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]])){
Expand Down
57 changes: 46 additions & 11 deletions R/utils_render_reigster_html.r
Original file line number Diff line number Diff line change
Expand Up @@ -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))

Expand All @@ -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)
Expand All @@ -62,32 +67,50 @@ 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)

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)

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"),
Expand All @@ -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)
Expand All @@ -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)){
Expand Down

0 comments on commit 5319afb

Please sign in to comment.