From 49ae3bda85a2bdfc34d9cb241b2cd5e7360d71b5 Mon Sep 17 00:00:00 2001 From: Olivia Box Power Date: Mon, 3 Feb 2025 16:27:59 +0000 Subject: [PATCH] Rename package aftables --- .Rbuildignore | 3 +- .github/CODE_OF_CONDUCT.md | 2 +- .github/CONTRIBUTING.md | 4 +- DESCRIPTION | 12 +- NAMESPACE | 12 +- NEWS.md | 5 + R/addin.R | 42 +++--- R/{a11ytable.R => aftable.R} | 84 ++++++------ ...11ytables-package.R => aftables-package.R} | 0 R/data.R | 20 +-- R/{utils-a11ytable.R => utils-aftable.R} | 16 +-- R/workbook.R | 42 +++--- README.Rmd | 40 +++--- README.md | 58 ++++---- _pkgdown.yml | 18 +-- a11ytables.Rproj => aftables.Rproj | 0 cran-comments.md | 5 + data-raw/data.R | 23 ++-- data/demo_a11ytable.rda | Bin 1202 -> 0 bytes data/demo_aftable.rda | Bin 0 -> 1274 bytes data/demo_df.rda | Bin 1201 -> 1262 bytes data/demo_workbook.rda | Bin 93393 -> 108541 bytes data/mtcars_df.rda | Bin 1033 -> 1053 bytes data/mtcars_df2.rda | Bin 1178 -> 1183 bytes inst/CITATION | 10 +- inst/rstudio/addins.dcf | 12 +- ...ytables-package.Rd => aftables-package.Rd} | 16 +-- man/as_a11ytable.Rd | 26 ---- man/as_aftable.Rd | 26 ++++ man/at_template_a11ytable.Rd | 12 -- man/at_template_aftable.Rd | 12 ++ man/at_template_workflow.Rd | 4 +- ...{create_a11ytable.Rd => create_aftable.Rd} | 32 ++--- man/{demo_a11ytable.Rd => demo_aftable.Rd} | 10 +- man/demo_df.Rd | 4 +- man/demo_workbook.Rd | 2 +- man/generate_workbook.Rd | 16 +-- man/mtcars_df.Rd | 4 +- man/mtcars_df2.Rd | 4 +- man/summary.a11ytable.Rd | 26 ---- man/summary.aftable.Rd | 26 ++++ man/tbl_sum.a11ytable.Rd | 27 ---- man/tbl_sum.aftable.Rd | 27 ++++ tests/testthat.R | 4 +- tests/testthat/_snaps/a11ytable.md | 2 +- tests/testthat/_snaps/addins.md | 6 +- tests/testthat/test-a11ytable.R | 128 +++++++++--------- tests/testthat/test-addins.R | 4 +- tests/testthat/test-workbook.R | 14 +- vignettes/{a11ytables.Rmd => aftables.Rmd} | 78 +++++------ vignettes/checklist.Rmd | 66 ++++----- vignettes/structure.Rmd | 86 ++++++------ vignettes/terminology.Rmd | 8 +- 53 files changed, 544 insertions(+), 534 deletions(-) rename R/{a11ytable.R => aftable.R} (82%) rename R/{a11ytables-package.R => aftables-package.R} (100%) rename R/{utils-a11ytable.R => utils-aftable.R} (95%) rename a11ytables.Rproj => aftables.Rproj (100%) create mode 100644 cran-comments.md delete mode 100644 data/demo_a11ytable.rda create mode 100644 data/demo_aftable.rda rename man/{a11ytables-package.Rd => aftables-package.Rd} (68%) delete mode 100644 man/as_a11ytable.Rd create mode 100644 man/as_aftable.Rd delete mode 100644 man/at_template_a11ytable.Rd create mode 100644 man/at_template_aftable.Rd rename man/{create_a11ytable.Rd => create_aftable.Rd} (90%) rename man/{demo_a11ytable.Rd => demo_aftable.Rd} (84%) delete mode 100644 man/summary.a11ytable.Rd create mode 100644 man/summary.aftable.Rd delete mode 100644 man/tbl_sum.a11ytable.Rd create mode 100644 man/tbl_sum.aftable.Rd rename vignettes/{a11ytables.Rmd => aftables.Rmd} (69%) diff --git a/.Rbuildignore b/.Rbuildignore index 208d4de..68053ca 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,4 +1,4 @@ -^a11ytables\.Rproj$ +^aftables\.Rproj$ ^\.Rproj\.user$ ^data-raw$ ^README\.Rmd$ @@ -11,3 +11,4 @@ ^codecov\.yml$ ^doc$ ^Meta$ +^cran-comments\.md$ diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 27344ac..7790c50 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -1,4 +1,4 @@ -# Code of Conduct for `a11ytables` +# Code of Conduct for `aftables` ## Civil Service Code diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 682046a..4eb0c4f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to {a11ytables} +# Contributing to {aftables} -This outlines how to propose a change to {a11ytables}. +This outlines how to propose a change to {aftables}. ## Fixing typos diff --git a/DESCRIPTION b/DESCRIPTION index bcdf009..029e007 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ -Package: a11ytables +Package: aftables Title: Create Spreadsheet Publications Following Best Practice -Version: 0.3.2 +Version: 1.0.0 Authors@R: c( person("Matt", "Dray", , "mwdray@gmail.com", role = c("aut")), person("Tim", "Taylor", role = "ctb"), @@ -13,11 +13,11 @@ Description: Generate spreadsheet publications that follow best practice accessibility. Based on 'openxlsx'. See also the Python package 'gptables'. License: MIT + file LICENSE -URL: https://best-practice-and-impact.github.io/a11ytables/, - https://github.com/best-practice-and-impact/a11ytables -BugReports: https://github.com/best-practice-and-impact/a11ytables/issues +URL: https://best-practice-and-impact.github.io/aftables/, + https://github.com/best-practice-and-impact/aftables +BugReports: https://github.com/best-practice-and-impact/aftables/issues Depends: - R (>= 2.10) + R (>= 3.5) Imports: openxlsx, pillar diff --git a/NAMESPACE b/NAMESPACE index 1cd6fce..4f1b52e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,11 +1,11 @@ # Generated by roxygen2: do not edit by hand -S3method(summary,a11ytable) -S3method(tbl_sum,a11ytable) -export(as_a11ytable) -export(at_template_a11ytable) +S3method(summary,aftable) +S3method(tbl_sum,aftable) +export(as_aftable) +export(at_template_aftable) export(at_template_workflow) -export(create_a11ytable) +export(create_aftable) export(generate_workbook) -export(is_a11ytable) +export(is_aftable) importFrom(pillar,tbl_sum) diff --git a/NEWS.md b/NEWS.md index 0ce148f..90350a9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +# aftables 1.0.0 + +* Updated package name to aftables. Function names have been updated to remove references to a11ytables. + + # a11ytables 0.3.2 * Bug fix: ensured factors are converted to character before assessing whether the column needs to be widened (#110, #113). diff --git a/R/addin.R b/R/addin.R index 0f5fe73..eba8a17 100644 --- a/R/addin.R +++ b/R/addin.R @@ -1,17 +1,17 @@ -#' Insert Demo 'create_a11ytable' Template +#' Insert Demo 'create_aftable' Template #' -#' Insert at the cursor a template for \code{\link{create_a11ytable}} from the -#' 'a11ytable' package, pre-filled with demo data. +#' Insert at the cursor a template for \code{\link{create_aftable}} from the +#' 'aftable' package, pre-filled with demo data. #' #' @export -at_template_a11ytable <- function() { - rstudioapi::insertText(string_create_a11ytable()) +at_template_aftable <- function() { + rstudioapi::insertText(string_create_aftable()) } -#' Insert Full Demo 'a11ytables' Template Workflow +#' Insert Full Demo 'aftables' Template Workflow #' #' Insert at the cursor (a) demo templates for cover, contents and notes -#' tables, and (b) a call to \code{\link{create_a11ytable}} pre-filled with +#' tables, and (b) a call to \code{\link{create_aftable}} pre-filled with #' demo data. #' #' @export @@ -23,13 +23,13 @@ at_template_workflow <- function() { "\n\n", string_tables(), "\n\n", - "# Create new a11ytable", + "# Create new aftable", "\n\n", - string_create_a11ytable(), + string_create_aftable(), "\n\n", - "# Generate workbook from a11ytable", + "# Generate workbook from aftable", "\n\n", - "my_wb <- a11ytables::generate_workbook(my_a11ytable)", + "my_wb <- aftables::generate_workbook(my_aftable)", "\n\n", "# Create output", "\n\n", @@ -41,7 +41,7 @@ at_template_workflow <- function() { } -#' A String Containing Code to Prepare Tables for an 'a11ytables' Object +#' A String Containing Code to Prepare Tables for an 'aftables' Object #' @noRd string_tables <- function() { @@ -49,8 +49,8 @@ string_tables <- function() { "Section 1" = c("First row of Section 1.", "Second row of Section 1."), "Section 2" = "The only row of Section 2.", "Section 3" = c( - "[Website](https://best-practice-and-impact.github.io/a11ytables/)", - "[Email address](mailto:fake.address@a11ytables.com)" + "[Website](https://best-practice-and-impact.github.io/aftables/)", + "[Email address](mailto:fake.address@aftables.com)" ) ) @@ -85,16 +85,16 @@ table_2_df <- data.frame(Category = LETTERS[1:10], Numeric = 1:10)' } -#' A String Containing Code to Generate an 'a11ytables' Object +#' A String Containing Code to Generate an 'aftables' Object #' @noRd -string_create_a11ytable <- function() { +string_create_aftable <- function() { - 'my_a11ytable <- - a11ytables::create_a11ytable( + 'my_aftable <- + aftables::create_aftable( tab_titles = c("Cover", "Contents", "Notes", "Table_1", "Table_2"), sheet_types = c("cover", "contents", "notes", "tables", "tables"), sheet_titles = c( - "The \'a11ytables\' Demo Workbook", + "The \'aftables\' Demo Workbook", "Table of contents", "Notes", "Table 1: First Example Sheet", @@ -111,13 +111,13 @@ string_create_a11ytable <- function() { NA_character_, c( "First custom row for Table 1.", - "A second custom row [with a hyperlink.](https://best-practice-and-impact.github.io/a11ytables/)" + "A second custom row [with a hyperlink.](https://best-practice-and-impact.github.io/aftables/)" ), "A custom row for Table 2" ), sources = c( rep(NA_character_, 3), - "[The Source Material, 2024](https://best-practice-and-impact.github.io/a11ytables/)", + "[The Source Material, 2024](https://best-practice-and-impact.github.io/aftables/)", "The Source Material, 2024" ), tables = list(cover_list, contents_df, notes_df, table_1_df, table_2_df) diff --git a/R/a11ytable.R b/R/aftable.R similarity index 82% rename from R/a11ytable.R rename to R/aftable.R index d88285c..beccf7e 100644 --- a/R/a11ytable.R +++ b/R/aftable.R @@ -1,7 +1,7 @@ -#' Create An 'a11ytable' Object +#' Create An 'aftable' Object #' -#' Create a new a11ytable-class object, which is a special data.frame that +#' Create a new aftable-class object, which is a special data.frame that #' contains all the information needed in your output spreadsheet. In turn, the #' object created by this function can be used to populate an 'openxlsx' #' Workbook-class object with the function \code{\link{generate_workbook}}. @@ -79,7 +79,7 @@ #' \item To the 'source' argument for sheets of type 'table' only. #' } #' -#' @return An object with classes 'a11ytable', 'tbl' and 'data.frame'. +#' @return An object with classes 'aftable', 'tbl' and 'data.frame'. #' #' @examples #' # Prepare some demo tables of information @@ -90,8 +90,8 @@ #' "Section 1" = c("First row of Section 1.", "Second row of Section 1."), #' "Section 2" = "The only row of Section 2.", #' "Section 3" = c( -#' "[Website](https://best-practice-and-impact.github.io/a11ytables/)", -#' "[Email address](mailto:fake.address@a11ytables.com)" +#' "[Website](https://best-practice-and-impact.github.io/aftables/)", +#' "[Email address](mailto:fake.address@aftables.com)" #' ) #' ) #' @@ -124,14 +124,14 @@ #' #' table_2_df <- data.frame(Category = LETTERS[1:10], Numeric = 1:10) #' -#' # Create 'a11ytables' object +#' # Create 'aftables' object #' #' x <- -#' a11ytables::create_a11ytable( +#' aftables::create_aftable( #' tab_titles = c("Cover", "Contents", "Notes", "Table_1", "Table_2"), #' sheet_types = c("cover", "contents", "notes", "tables", "tables"), #' sheet_titles = c( -#' "The 'a11ytables' Demo Workbook", +#' "The 'aftables' Demo Workbook", #' "Table of contents", #' "Notes", #' "Table 1: First Example Sheet", @@ -147,27 +147,27 @@ #' NA_character_, #' "A custom row.", #' c( -#' "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/a11ytables/)", +#' "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/aftables/)", #' "Second custom row." #' ), #' "A custom row." #' ), #' sources = c( #' rep(NA_character_, 3), -#' "[The Source Material, 2024.](https://best-practice-and-impact.github.io/a11ytables/)", +#' "[The Source Material, 2024.](https://best-practice-and-impact.github.io/aftables/)", #' "The Source Material, 2024." #' ), #' tables = list(cover_list, contents_df, notes_df, table_1_df, table_2_df) #' ) #' -#' # Test that 'a11ytable' is one of the object's classes -#' is_a11ytable(x) +#' # Test that 'aftable' is one of the object's classes +#' is_aftable(x) #' #' # Look at the structure of the object #' str(x, max.level = 2) #' #' @export -create_a11ytable <- function(tab_titles, +create_aftable <- function(tab_titles, sheet_types = c("cover", "contents", "notes", "tables"), sheet_titles, blank_cells = NA_character_, @@ -187,25 +187,25 @@ create_a11ytable <- function(tab_titles, x[["custom_rows"]] <- custom_rows x[["table"]] <- tables - as_a11ytable(x) + as_aftable(x) } -#' Coerce To An 'a11ytable' Object +#' Coerce To An 'aftable' Object #' -#' Functions to check if an object is an a11ytable, or coerce it if possible. +#' Functions to check if an object is an aftable, or coerce it if possible. #' #' @param x A data.frame object to coerce. #' -#' @return \code{as_a11ytable} returns an object of class a11ytable if possible. -#' \code{is_a11ytable} returns \code{TRUE} if the object has class -#' a11ytable, otherwise \code{FALSE}. +#' @return \code{as_aftable} returns an object of class aftable if possible. +#' \code{is_aftable} returns \code{TRUE} if the object has class +#' aftable, otherwise \code{FALSE}. #' #' @examples -#' is_a11ytable(demo_a11ytable) +#' is_aftable(demo_aftable) #' #' @export -as_a11ytable <- function(x) { +as_aftable <- function(x) { if (any(names(x) %in% "tab_title")) { .check_tab_titles(x[["tab_title"]]) @@ -216,41 +216,41 @@ as_a11ytable <- function(x) { x[["blank_cells"]] <- .append_period(x[["blank_cells"]]) } - class(x) <- c("a11ytable", "tbl", "data.frame") + class(x) <- c("aftable", "tbl", "data.frame") - .validate_a11ytable(x) - .warn_a11ytable(x) + .validate_aftable(x) + .warn_aftable(x) x } -#' @rdname as_a11ytable +#' @rdname as_aftable #' @export -is_a11ytable <- function(x) { +is_aftable <- function(x) { - inherits(x, "a11ytable") + inherits(x, "aftable") } -#' Summarise An 'a11ytable' Object +#' Summarise An 'aftable' Object #' -#' A concise result summary of an a11ytable-class object to see information +#' A concise result summary of an aftable-class object to see information #' about the sheet content. Shows a numbered list of sheets with each tab title, #' sheet type and table dimensions. #' -#' @param object An a11ytable-class object for which to get a summary. +#' @param object An aftable-class object for which to get a summary. #' @param ... Other arguments to pass. #' #' @examples -#' # Print a concise summary of the a11ytable-class object -#' summary(demo_a11ytable) +#' # Print a concise summary of the aftable-class object +#' summary(demo_aftable) #' #' # Alternatively, look at the structure -#' str(demo_a11ytable, max.level = 2) +#' str(demo_aftable, max.level = 2) #' #' @export -summary.a11ytable <- function(object, ...) { +summary.aftable <- function(object, ...) { tables <- object[["table"]] @@ -288,31 +288,31 @@ summary.a11ytable <- function(object, ...) { ) ) - cat("# An a11ytable with", nrow(object), "sheets:", summary_string) + cat("# An aftable with", nrow(object), "sheets:", summary_string) invisible(object) } -#' Provide A Succinct Summary Of An 'a11ytable' Object +#' Provide A Succinct Summary Of An 'aftable' Object #' -#' A brief text description of an a11ytable-class object. +#' A brief text description of an aftable-class object. #' -#' @param x An a11ytable-class object to summarise. +#' @param x An aftable-class object to summarise. #' @param ... Other arguments to pass. #' #' @return Named character vector. #' #' @examples #' # Print with description -#' print(demo_a11ytable) +#' print(demo_aftable) #' #' # Print description only (package 'tibble' must be installed) -#' tibble::tbl_sum(demo_a11ytable) +#' tibble::tbl_sum(demo_aftable) #' #' @export -tbl_sum.a11ytable <- function(x, ...) { +tbl_sum.aftable <- function(x, ...) { header <- sprintf( "%s x %s", @@ -320,6 +320,6 @@ tbl_sum.a11ytable <- function(x, ...) { formatC(ncol(x), big.mark = ",") ) - c("a11ytable" = header) + c("aftable" = header) } diff --git a/R/a11ytables-package.R b/R/aftables-package.R similarity index 100% rename from R/a11ytables-package.R rename to R/aftables-package.R diff --git a/R/data.R b/R/data.R index dd733de..e691e13 100644 --- a/R/data.R +++ b/R/data.R @@ -1,7 +1,7 @@ #' A Demo 'data.frame' Object #' -#' A pre-created data.frame ready to be converted to an a11ytables-class object -#' with \code{\link{as_a11ytable}} and then an 'openxlsx' Workbook-class object +#' A pre-created data.frame ready to be converted to an aftables-class object +#' with \code{\link{as_aftable}} and then an 'openxlsx' Workbook-class object #' with \code{\link{generate_workbook}}. #' #' @format A data.frame with 6 rows and 7 columns: @@ -16,9 +16,9 @@ #' } "demo_df" -#' A Demo 'a11ytables' Object +#' A Demo 'aftables' Object #' -#' A pre-created 'a11ytables' object ready to be converted to an 'openxlsx' +#' A pre-created 'aftables' object ready to be converted to an 'openxlsx' #' Workbook-class object with \code{\link{generate_workbook}}. #' #' @format A data.frame with 6 rows and 7 columns: @@ -31,12 +31,12 @@ #' \item{source}{Character. The origin of the data, if relevant.} #' \item{table}{List-column of data.frames (apart from the cover, which is a list) containing the statistical tables.} #' } -"demo_a11ytable" +"demo_aftable" #' A Demo 'Workbook' Object #' #' A pre-created 'openxlsx' Workbook'-class object generated from an -#' a11ytables-class object with \code{\link{generate_workbook}}. +#' aftables-class object with \code{\link{generate_workbook}}. #' #' @format An 'openxlsx' Workbook-class object with 5 sheets. "demo_workbook" @@ -48,8 +48,8 @@ #' favour of \code{\link{demo_df}}. #' #' A modified version of the mtcars dataset prepared into a data.frame structure -#' ready for coercion to an a11ytables-class object with -#' \code{\link{as_a11ytable}}. Uses a dataframe as input to the cover table; +#' ready for coercion to an aftables-class object with +#' \code{\link{as_aftable}}. Uses a dataframe as input to the cover table; #' \code{\link{mtcars_df}} uses a list as input to the cover table. #' #' @details @@ -80,8 +80,8 @@ #' favour of \code{\link{demo_df}}. #' #' A modified version of the mtcars dataset prepared into a data.frame structure -#' ready for coercion to an a11ytables-class object with -#' \code{\link{as_a11ytable}}. +#' ready for coercion to an aftables-class object with +#' \code{\link{as_aftable}}. #' #' @details #' Uses a list as input to the cover table (implemented in version 0.2), whereas diff --git a/R/utils-a11ytable.R b/R/utils-aftable.R similarity index 95% rename from R/utils-a11ytable.R rename to R/utils-aftable.R index 275570e..0f0d7b6 100644 --- a/R/utils-a11ytable.R +++ b/R/utils-aftable.R @@ -60,11 +60,11 @@ } -#' Validate an 'a11ytable' Object -#' @param text x. An object with class 'a11ytable', likely created with -#' \code{\link{create_a11ytable}}. +#' Validate an 'aftable' Object +#' @param text x. An object with class 'aftable', likely created with +#' \code{\link{create_aftable}}. #' @noRd -.validate_a11ytable <- function(x) { +.validate_aftable <- function(x) { names_req <- c( "tab_title", @@ -194,11 +194,11 @@ } -#' Warn if an 'a11ytable' Has a Non-critical Problem -#' @param text x. An object with class 'a11ytable', likely created with -#' \code{\link{create_a11ytable}}. +#' Warn if an 'aftable' Has a Non-critical Problem +#' @param text x. An object with class 'aftable', likely created with +#' \code{\link{create_aftable}}. #' @noRd -.warn_a11ytable <- function(content) { +.warn_aftable <- function(content) { # Warn about tab_title limitations diff --git a/R/workbook.R b/R/workbook.R index 62c7c3b..3c0892c 100644 --- a/R/workbook.R +++ b/R/workbook.R @@ -1,55 +1,55 @@ -#' Generate A Workbook Object From An 'a11ytable' +#' Generate A Workbook Object From An 'aftable' #' #' Populate an 'openxlsx' Workbook-class object with content from an -#' a11ytable-class object. In turn, the output can be passed to +#' aftable-class object. In turn, the output can be passed to #' \code{\link[openxlsx]{saveWorkbook}} from 'openxlsx' #' -#' @param a11ytable An a11ytable-class object created using -#' \code{\link{create_a11ytable}} (or \code{\link{as_a11ytable}}), which +#' @param aftable An aftable-class object created using +#' \code{\link{create_aftable}} (or \code{\link{as_aftable}}), which #' contains the data and information needed to create a workbook. #' #' @return A Workbook-class object. #' #' @examples -#' # Convert an a11ytable to a Workbook-class object -#' x <- generate_workbook(demo_a11ytable) +#' # Convert an aftable to a Workbook-class object +#' x <- generate_workbook(demo_aftable) #' class(x) #' #' # As above, using a compliant data.frame and the base pipe #' y <- demo_df |> -#' as_a11ytable() |> +#' as_aftable() |> #' generate_workbook() #' #' @export -generate_workbook <- function(a11ytable) { +generate_workbook <- function(aftable) { - if (!is_a11ytable(a11ytable)) { - stop("The object passed to argument 'content' must have class 'a11ytable'.") + if (!is_aftable(aftable)) { + stop("The object passed to argument 'content' must have class 'aftable'.") } # Create a table_name from tab_title (unique, no spaces, no punctuation) - a11ytable[["table_name"]] <- - gsub(" ", "_", tolower(trimws(a11ytable[["tab_title"]]))) - a11ytable[["table_name"]] <- - gsub("(?!_)[[:punct:]]", "", a11ytable[["table_name"]], perl = TRUE) + aftable[["table_name"]] <- + gsub(" ", "_", tolower(trimws(aftable[["tab_title"]]))) + aftable[["table_name"]] <- + gsub("(?!_)[[:punct:]]", "", aftable[["table_name"]], perl = TRUE) # Create workbook, add tabs, cover, contents (required for all workbooks) wb <- openxlsx::createWorkbook() - wb <- .add_tabs(wb, a11ytable) - wb <- .add_cover(wb, a11ytable) - wb <- .add_contents(wb, a11ytable) + wb <- .add_tabs(wb, aftable) + wb <- .add_cover(wb, aftable) + wb <- .add_contents(wb, aftable) # There won't always be a notes tab - if (any(a11ytable$sheet_type %in% "notes")) { - wb <- .add_notes(wb, a11ytable) + if (any(aftable$sheet_type %in% "notes")) { + wb <- .add_notes(wb, aftable) } # Iterable titles for tabs containing tables - table_sheets <- a11ytable[a11ytable$sheet_type == "tables", ][["table_name"]] + table_sheets <- aftable[aftable$sheet_type == "tables", ][["table_name"]] for (i in table_sheets) { - wb <- .add_tables(wb, a11ytable, table_name = i) + wb <- .add_tables(wb, aftable, table_name = i) } return(wb) diff --git a/README.Rmd b/README.Rmd index 4a6d303..fb1830c 100644 --- a/README.Rmd +++ b/README.Rmd @@ -13,20 +13,20 @@ knitr::opts_chunk$set( ) ``` -# {a11ytables} +# {aftables} [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) [![CRAN -status](https://www.r-pkg.org/badges/version/a11ytables)](https://CRAN.R-project.org/package=a11ytables) -[![R-CMD-check](https://github.com/best-practice-and-impact/a11ytables/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/best-practice-and-impact/a11ytables/actions/workflows/R-CMD-check.yaml) +status](https://www.r-pkg.org/badges/version/aftables)](https://CRAN.R-project.org/package=aftables) +[![R-CMD-check](https://github.com/best-practice-and-impact/aftables/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/best-practice-and-impact/aftables/actions/workflows/R-CMD-check.yaml) ## Purpose -An R package to help automatically create reproducible spreadsheets that adhere to the guidance on [releasing statistics in spreadsheets](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/) from the UK government's [Analysis Function](https://analysisfunction.civilservice.gov.uk/), with a focus on accessibility ('a11y'). +An R package to help automatically create reproducible spreadsheets that adhere to the guidance on [releasing statistics in spreadsheets](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/) from the UK government's [Analysis Function](https://analysisfunction.civilservice.gov.uk/), with a focus on accessibility. -Visit [the {a11ytables} website](https://best-practice-and-impact.github.io/a11ytables/) for documentation. +Visit [the {aftables} website](https://best-practice-and-impact.github.io/aftables/) for documentation. ## Accessibility @@ -34,24 +34,24 @@ This package is not yet capable of creating perfectly accessible spreadsheets bu ## Contribute -The package is under (opinionated) active development. Please see [the NEWS file](https://best-practice-and-impact.github.io/a11ytables/news/index.html) for the latest changes. +The package is under (opinionated) active development. Please see [the NEWS file](https://best-practice-and-impact.github.io/aftables/news/index.html) for the latest changes. -To contribute, please add [an issue](https://github.com/best-practice-and-impact/a11ytables/issues) or [a pull request](https://github.com/best-practice-and-impact/a11ytables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/a11ytables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/a11ytables/blob/main/.github/CONTRIBUTING.md) guidance. +To contribute, please add [an issue](https://github.com/best-practice-and-impact/aftables/issues) or [a pull request](https://github.com/best-practice-and-impact/aftables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/aftables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/aftables/blob/main/.github/CONTRIBUTING.md) guidance. ## Install -Install the package [from GitHub](https://github.com/best-practice-and-impact/a11ytables) using [{remotes}](https://remotes.r-lib.org/). +Install the package [from GitHub](https://github.com/best-practice-and-impact/aftables) using [{remotes}](https://remotes.r-lib.org/). ```{r install, eval=FALSE} install.packages("remotes") # if not already installed remotes::install_github( - repo = "best-practice-and-impact/a11ytables", # GitHub user/repository + repo = "best-practice-and-impact/aftables", # GitHub user/repository dependencies = TRUE, # install required/suggested packages build_vignettes = TRUE # generate vignette documentation ) -library(a11ytables) # attach package +library(aftables) # attach package ``` @@ -59,28 +59,28 @@ library(a11ytables) # attach package To create a spreadsheet: -1. Use `create_a11ytable()` +1. Use `create_aftable()` 1. Pass the output to `generate_workbook()` 1. Pass the output to `openxlsx::saveWorkbook()` -Run `?function_name` or visit [the package website](https://best-practice-and-impact.github.io/a11ytables/reference/index.html) for function documentation. For long-form documentation, [visit the package website](https://best-practice-and-impact.github.io/a11ytables/) or run `browseVignettes("a11ytables")` to read the: +Run `?function_name` or visit [the package website](https://best-practice-and-impact.github.io/aftables/reference/index.html) for function documentation. For long-form documentation, [visit the package website](https://best-practice-and-impact.github.io/aftables/) or run `browseVignettes("aftables")` to read the: -* [introductory vignette](https://best-practice-and-impact.github.io/a11ytables/articles/a11ytables.html) to get started -* [accessbility checklist vignette](https://best-practice-and-impact.github.io/a11ytables/articles/checklist.html) to see how the package complies with best-practice guidance -* [terminology vignette](https://best-practice-and-impact.github.io/a11ytables/articles/terminology) to understand the nomenclature of spreadsheet terms as used in this package -* [package structure vignette](https://best-practice-and-impact.github.io/a11ytables/articles/structure) to see how the package works under the hood +* [introductory vignette](https://best-practice-and-impact.github.io/aftables/articles/aftables.html) to get started +* [accessbility checklist vignette](https://best-practice-and-impact.github.io/aftables/articles/checklist.html) to see how the package complies with best-practice guidance +* [terminology vignette](https://best-practice-and-impact.github.io/aftables/articles/terminology) to understand the nomenclature of spreadsheet terms as used in this package +* [package structure vignette](https://best-practice-and-impact.github.io/aftables/articles/structure) to see how the package works under the hood -This package also includes [an RStudio Addin](https://rstudio.github.io/rstudioaddins/) that inserts pre-filled demo skeletons of the {a11ytables} workflow. +This package also includes [an RStudio Addin](https://rstudio.github.io/rstudioaddins/) that inserts pre-filled demo skeletons of the {aftables} workflow. ## Related projects -The ONS's Analysis Standards and Pipelines team has released [a Python package called 'gptables'](https://github.com/best-practice-and-impact/gptables). {a11ytables} is an independent effort that offers a native R solution that is very similar to gptables in its outputs, though there are some differences in implementation. +The ONS's Analysis Standards and Pipelines team has released [a Python package called 'gptables'](https://github.com/best-practice-and-impact/gptables). {aftables} is an independent effort that offers a native R solution that is very similar to gptables in its outputs, though there are some differences in implementation. -{a11ytables} can help you fulfil a [Reproducible Analytical Pipeline](https://analysisfunction.civilservice.gov.uk/support/reproducible-analytical-pipelines/) by automating the generation of compliant spreadsheets for publication. +{aftables} can help you fulfill a [Reproducible Analytical Pipeline](https://analysisfunction.civilservice.gov.uk/support/reproducible-analytical-pipelines/) by automating the generation of compliant spreadsheets for publication. ## Code of Conduct -Please note that the {a11ytables} project is released with a [Contributor Code of Conduct](https://best-practice-and-impact.github.io/a11ytables/CODE_OF_CONDUCT.html). +Please note that the {aftables} project is released with a [Contributor Code of Conduct](https://best-practice-and-impact.github.io/aftables/CODE_OF_CONDUCT.html). ## Copyright and Licensing diff --git a/README.md b/README.md index 39b68c8..657c822 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# {a11ytables} +# {aftables} @@ -9,8 +9,8 @@ state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) [![CRAN -status](https://www.r-pkg.org/badges/version/a11ytables)](https://CRAN.R-project.org/package=a11ytables) -[![R-CMD-check](https://github.com/best-practice-and-impact/a11ytables/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/best-practice-and-impact/a11ytables/actions/workflows/R-CMD-check.yaml) +status](https://www.r-pkg.org/badges/version/aftables)](https://CRAN.R-project.org/package=aftables) +[![R-CMD-check](https://github.com/best-practice-and-impact/aftables/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/best-practice-and-impact/aftables/actions/workflows/R-CMD-check.yaml) ## Purpose @@ -20,10 +20,10 @@ adhere to the guidance on [releasing statistics in spreadsheets](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/) from the UK government’s [Analysis Function](https://analysisfunction.civilservice.gov.uk/), with a focus -on accessibility (‘a11y’). +on accessibility. -Visit [the {a11ytables} -website](https://best-practice-and-impact.github.io/a11ytables/) for +Visit [the {aftables} +website](https://best-practice-and-impact.github.io/aftables/) for documentation. ## Accessibility @@ -42,87 +42,87 @@ monitor use and the outputs produced. The package is under (opinionated) active development. Please see [the NEWS -file](https://best-practice-and-impact.github.io/a11ytables/news/index.html) +file](https://best-practice-and-impact.github.io/aftables/news/index.html) for the latest changes. To contribute, please add [an -issue](https://github.com/best-practice-and-impact/a11ytables/issues) or +issue](https://github.com/best-practice-and-impact/aftables/issues) or [a pull -request](https://github.com/best-practice-and-impact/a11ytables/pulls) +request](https://github.com/best-practice-and-impact/aftables/pulls) after reading [the code of -conduct](https://github.com/best-practice-and-impact/a11ytables/blob/main/CODE_OF_CONDUCT.md) +conduct](https://github.com/best-practice-and-impact/aftables/blob/main/CODE_OF_CONDUCT.md) and -[contributing](https://github.com/best-practice-and-impact/a11ytables/blob/main/.github/CONTRIBUTING.md) +[contributing](https://github.com/best-practice-and-impact/aftables/blob/main/.github/CONTRIBUTING.md) guidance. ## Install Install the package [from -GitHub](https://github.com/best-practice-and-impact/a11ytables) using +GitHub](https://github.com/best-practice-and-impact/aftables) using [{remotes}](https://remotes.r-lib.org/). ``` r install.packages("remotes") # if not already installed remotes::install_github( - repo = "best-practice-and-impact/a11ytables", # GitHub user/repository + repo = "best-practice-and-impact/aftables", # GitHub user/repository dependencies = TRUE, # install required/suggested packages build_vignettes = TRUE # generate vignette documentation ) -library(a11ytables) # attach package +library(aftables) # attach package ``` ## Use To create a spreadsheet: -1. Use `create_a11ytable()` +1. Use `create_aftable()` 2. Pass the output to `generate_workbook()` 3. Pass the output to `openxlsx::saveWorkbook()` Run `?function_name` or visit [the package -website](https://best-practice-and-impact.github.io/a11ytables/reference/index.html) +website](https://best-practice-and-impact.github.io/aftables/reference/index.html) for function documentation. For long-form documentation, [visit the -package website](https://best-practice-and-impact.github.io/a11ytables/) -or run `browseVignettes("a11ytables")` to read the: +package website](https://best-practice-and-impact.github.io/aftables/) +or run `browseVignettes("aftables")` to read the: - [introductory - vignette](https://best-practice-and-impact.github.io/a11ytables/articles/a11ytables.html) + vignette](https://best-practice-and-impact.github.io/aftables/articles/aftables.html) to get started - [accessbility checklist - vignette](https://best-practice-and-impact.github.io/a11ytables/articles/checklist.html) + vignette](https://best-practice-and-impact.github.io/aftables/articles/checklist.html) to see how the package complies with best-practice guidance - [terminology - vignette](https://best-practice-and-impact.github.io/a11ytables/articles/terminology) + vignette](https://best-practice-and-impact.github.io/aftables/articles/terminology) to understand the nomenclature of spreadsheet terms as used in this package - [package structure - vignette](https://best-practice-and-impact.github.io/a11ytables/articles/structure) + vignette](https://best-practice-and-impact.github.io/aftables/articles/structure) to see how the package works under the hood This package also includes [an RStudio Addin](https://rstudio.github.io/rstudioaddins/) that inserts pre-filled -demo skeletons of the {a11ytables} workflow. +demo skeletons of the {aftables} workflow. ## Related projects The ONS’s Analysis Standards and Pipelines team has released [a Python package called ‘gptables’](https://github.com/best-practice-and-impact/gptables). -{a11ytables} is an independent effort that offers a native R solution -that is very similar to gptables in its outputs, though there are some +{aftables} is an independent effort that offers a native R solution that +is very similar to gptables in its outputs, though there are some differences in implementation. -{a11ytables} can help you fulfil a [Reproducible Analytical +{aftables} can help you fulfill a [Reproducible Analytical Pipeline](https://analysisfunction.civilservice.gov.uk/support/reproducible-analytical-pipelines/) by automating the generation of compliant spreadsheets for publication. ## Code of Conduct -Please note that the {a11ytables} project is released with a -[Contributor Code of -Conduct](https://best-practice-and-impact.github.io/a11ytables/CODE_OF_CONDUCT.html). +Please note that the {aftables} project is released with a [Contributor +Code of +Conduct](https://best-practice-and-impact.github.io/aftables/CODE_OF_CONDUCT.html). ## Copyright and Licensing diff --git a/_pkgdown.yml b/_pkgdown.yml index 3b62bc5..5334d03 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,4 +1,4 @@ -url: https://best-practice-and-impact.github.io/a11ytables/ +url: https://best-practice-and-impact.github.io/aftables/ template: bootstrap: 5 @@ -19,16 +19,16 @@ footer: legal: © Crown Copyright, 2023 reference: - - title: "a11ytables" - desc: "Create, coerce and inspect a11ytable-class objects" + - title: "aftables" + desc: "Create, coerce and inspect aftable-class objects" contents: - - as_a11ytable - - create_a11ytable - - is_a11ytable - - summary.a11ytable - - tbl_sum.a11ytable + - as_aftable + - create_aftable + - is_aftable + - summary.aftable + - tbl_sum.aftable - title: "Workbooks" - desc: "Convert a11ytable- to Workbook-class objects" + desc: "Convert aftable- to Workbook-class objects" contents: generate_workbook - title: "Data" desc: "Demo datasets used in package examples" diff --git a/a11ytables.Rproj b/aftables.Rproj similarity index 100% rename from a11ytables.Rproj rename to aftables.Rproj diff --git a/cran-comments.md b/cran-comments.md new file mode 100644 index 0000000..858617d --- /dev/null +++ b/cran-comments.md @@ -0,0 +1,5 @@ +## R CMD check results + +0 errors | 0 warnings | 1 note + +* This is a new release. diff --git a/data-raw/data.R b/data-raw/data.R index 5fc4572..c6229de 100644 --- a/data-raw/data.R +++ b/data-raw/data.R @@ -1,7 +1,7 @@ # This file generates and writes demo datasets -# demo_df and demo_a11ytable (as of v0.3) --------------------------------- +# demo_df and demo_aftable (as of v0.3) --------------------------------- set.seed(1066) @@ -10,8 +10,8 @@ cover_list <- list( "Section 1" = c("First row of Section 1.", "Second row of Section 1."), "Section 2" = "The only row of Section 2.", "Section 3" = c( - "[Website](https://best-practice-and-impact.github.io/a11ytables/)", - "[Email address](mailto:fake.address@a11ytables.com)" + "[Website](https://best-practice-and-impact.github.io/aftables/)", + "[Email address](mailto:fake.address@aftables.com)" ) ) @@ -44,12 +44,11 @@ table_1_df <- data.frame( table_2_df <- data.frame(Category = LETTERS[1:10], Numeric = 1:10) -demo_a11ytable <- - a11ytables::create_a11ytable( +demo_aftable <- create_aftable( tab_titles = c("Cover", "Contents", "Notes", "Table_1", "Table_2"), sheet_types = c("cover", "contents", "notes", "tables", "tables"), sheet_titles = c( - "The 'a11ytables' Demo Workbook", + "The 'aftables' Demo Workbook", "Table of contents", "Notes", "Table_1: First Example Sheet", @@ -65,26 +64,26 @@ demo_a11ytable <- NA_character_, "A custom row.", c( - "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/a11ytables/)", + "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/aftables/)", "Second custom row." ), "A custom row." ), sources = c( rep(NA_character_, 3), - "[The Source Material, 2024.](https://best-practice-and-impact.github.io/a11ytables/)", + "[The Source Material, 2024.](https://best-practice-and-impact.github.io/aftables/)", "The Source Material, 2024." ), tables = list(cover_list, contents_df, notes_df, table_1_df, table_2_df) ) -demo_df <- as.data.frame(demo_a11ytable) +demo_df <- as.data.frame(demo_aftable) -demo_workbook <- generate_workbook(demo_a11ytable) +demo_workbook <- generate_workbook(demo_aftable) # Write to data/ usethis::use_data(demo_df, overwrite = TRUE) -usethis::use_data(demo_a11ytable, overwrite = TRUE) +usethis::use_data(demo_aftable, overwrite = TRUE) usethis::use_data(demo_workbook, overwrite = TRUE) @@ -110,7 +109,7 @@ cover_list <- ), "Properties" = "Suppressed values are replaced with the value '[c]'.", "Contact" = c( - "[Visit the website.](https://github.com/best-practice-and-impact/a11ytables)", + "[Visit the website.](https://github.com/best-practice-and-impact/aftables)", "[Email the team.](mailto:not-a-real-email-address@completely-fake.net)", "Telephone 0123456789" ) diff --git a/data/demo_a11ytable.rda b/data/demo_a11ytable.rda deleted file mode 100644 index b3b98400915b2573aa96f369fe0a779e15bd7ec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202 zcmV;j1Wo%wT4*^jL0KkKS+O{&jsOGPfB*mg{{LL({rLa$zRLgq|MNr;UI0KK0RVtT zG|eU^P3zDE9tTFqY>82!sg%k!GeQ~zKpFr500000001-tMt}eVKxAlxCJClS6C)E% zFcSh`1j1>6CMHY(2*h9nWN2WGGBnAi21L;a$WZ-LW{IdCrkZ+(s0|GO000000QCSF z00Te(2r^)rWMMKfG}8evCICz(m;z#CzyOR!07gcJ2-71>nqWmFOhC{CYI+(_dV|Uu zG-%K?Xbhf^(?dY@4@dw5)M#il20@T|pDxb7!ybgUw`u2Zqb0=VF0e5ez?^_e-9~Yv zO(|!bXmACaI9mk-Gzp1^8#y^LWMK@fFD$ZDKwdjp1?GmxXC$p}w;X@6CoVy9)ikoU zNy8%%VtTuucC0f|L6&-@aV-#yOAhCE|8*ia^d%}T7)xmaPSp}-2yV0SB5SxSnydb` zjrxL%VFD_|0v33<@Z|7#-W4YtgiBa`$nY%N zMhz9UryQ5u1y{1%LX2jqTK!BVxk^ToovJZdrwJ9w0#K;-=m87>kOHIx3?o#9-hd~C zo&`|Xg#+@1Ksm4`NCB}N=ukg;WEPt;Bu7p^4jhg|Cq6m&^$q42Js`o5%##Wl2?X^9 z5y@52c`GKTYcpM=Sm4#a3pFn^xP09$nFU2upvPvB9A$WxMR;>7310VK`Bdn)1C1Tv zChD5v+~#qk&aNU-Eoq%nauDMfl-o3n$G0f<>1W16DJr6|KE-p+kdc-WXiVXV3pEM# zSp3XtvNjpHL{G)%gqH8~`*;$NSaO9FI3ffz0gO@_D7i7x=*Mw@V^HZ{Stu|;3JKC^ z1Kb^L&Dy8zFQ;bPeSQ813Is$zI*2h28WLH)Yxs2Z9htLxtLpIzK~}`w0Q2A9It8W#&o)n3?_apnlIQ z1^io6plX+K5p^dxG@pxPxKP9{6Wj}cl|=<4QFMxe9O<8c5;tx#lmsY<5iEIZy0}CE zf`H=Ss;^AlWi~d;5D>_#kfr?w30(roS;458=$Gi2xR@+Ru6Trmz}y0Dko0v^cK=dl zlWLAR z40H+S6y_65R2+Kmyz*mG6d;f&5d)WiM;HqiU_>7j8O)07z@QLjFfATRY?-87&jKLu zz#=>{OV&6u7)^}Xi;L1Bh=9+oYTC7!PM+C_GiqafJtt5@&39Z8DKrGI0L8?Jhlh#K z%4}M26w?Ma!?OrI2w|u@47dc$wC^VYwCl9PF0CjiwiQ}Q5`-YwiE!rZLnda=O7(L*P&zKYV7=r( zjxU+QgQxegeZ8duzw!nQQ)>5yoA^+cNDd1h`7ofJ^Dm&YztEZ7SQqsU>CnUzDwC&r Qf&YuSBAh5lSe#VH0BUgxe*gdg diff --git a/data/demo_aftable.rda b/data/demo_aftable.rda new file mode 100644 index 0000000000000000000000000000000000000000..c15f7c97ce557c66ce6a2b3138caaf4c9b16ad29 GIT binary patch literal 1274 zcmVu06|NsC0{{LL({rLa$zS{r)|MNr;UI0KK0RVtT zG|eU_P3zDEUez|uoto};G~03#gi4>J)Ow$)GHp!M+J=BM0BubSfF7n#Mxp8llo}X- z(DfcsqfC!b2dU~CQ)&!|OhRbVo}r`DNt4vj06jox&;S5v007WwpaGBo8UO*1lTjFx z6ExC1lS4)ZrkWaJFpP#KBLXxqj6r}*CYX#PO&Vwo2sFsTXwwKW3{5ZuWNC*&;S4cdYa0D(vYR0nD(AAAr4kr!?% z**-|1e%I(0xF|5c)vYm%RTDcp;_&t&qMf0JQ?sogG2Sn!7);5TxRPix8Qdp|xG}2HJDkqeMHq(-*j%{iz@xBkg{%n;gIwgr%ZsZ? z3vD%(vZO%km~K47B+Z=&!{u8+u7xR7ZzDNC@`h5~WgoVfA61z8Ej94M(xY4@y@>q} zo$Wmu^K9PX3Etx*QW6!n6-6lwbrkU?8yT|LtiZ;8L#uhYxWgzCj3|M_e^Zwjub&Psv0w2FJ zyt4!$4WNMAux89*)iq%AF0ZD>w$Ugmb+jRC8#$$W=R}`P-PWjt2N7)zbC}y$U_1wD8NCt6vAZ+RZO51 zF%%Lh5-36~Xh;u3Jfb;3z|A^60HeG@no62oi8MF^eBX^Y31Masw*pY4K~18x$6p1_ z+FMtPPsy(;#hQ5NT`nEs+3tTk_`Y7=h7FAg`l%Q+8S|}LbHXL7qWe@*0W7|AtPV?G k7bGcwDhi_@m;;8Q9c#X1Dpf2_xdZ!K`xBvhE literal 0 HcmV?d00001 diff --git a/data/demo_df.rda b/data/demo_df.rda index 980d3008183a19cab7d5c9f5ab25be7a0e193e46..78dd85f87c3c42ba7a4d8f59b1285d4606c391ff 100644 GIT binary patch literal 1262 zcmVNcZIJdo4WXkvOz z4G&S|o})~UPzR~%8&hf^(<2F^Od!NDG{6y&rXh)d6D9x&kZ8aF5t9j%08AqWMA9+{ zrw03M(QfDHfu00E((0LU}|&>8{_GBBDn!VE(bOaU1hVi=eKGGG9i28;j! z88DeJ1i~;yA_USj#ZP*s+M1`7{Sssu03M)d4FRA427vVd05kv(P%<Ev0qJlA;+T;UR`($s&10 z2LOP~b#e-W0b06^ud^038}1nxZK|{@I8$vz!SL4h;d~uPq2PLw!N}i# zv63y&mZ%1-DW;ILJFz5~V{PoX@~Z5%Pk!y%s|t)E2#`YrBCD?g?Drb?XYPBfm7V$E z9tq(d8Q2sB5tKUlFHEO4NMjL5s*#Zzz2ACVi5^NYG089-fTT)%(%eFfXr`_WIhDPd zEg9yoE9*f!ilhN55JA2m5Kst&LMZ_Y2*9V!0DwvWX8`Dh1M`3YJ!oDW3e_J(C>*-v z7BSZsJ$69}j^_}ZBBCAYX~`;ceJ3F>&|d^2z! zT8&JB^3^CXnWBy~JW&;Rb1MoS_h91Pc}+IxQh~q%>qN#9u-_MqGZ0|lt`a^hl*X>_ z2yoXfFzt=Ajy>u}zf*bVLYc)L)ReZGW+jx(y`BOpH`SBqm0;ObRXH2bs?%x^Cs>(BL?> zn-Co%5v(^8nFjL>ITsw>NvL1NYi`kvuyy?ugHsQx(*L)b&O;f&gPF?M)wWPUpdcGF zmt0}fG~jtx(bMBwB$6P&P}e{}?M#Y{+)7fWsFp@^BD+Qk0V6Sx$oN*Jin)N0R}2Co zJQO0U`k9$dg8R)S{m5bp^vs1Y z^O7!LnCa1UfRlv@UQL#4Nx*Fl4RFhCDk{PjT9PFQLBff3ljwt2GlTfl#oAeqYTZu( z5tFAOE%*PK)BM?*_?ETu9)*cPSw7{)m;VV5$?VB4dSK4CY1@0(k=LPQcraG5VG YJn-5{s+A{Tf&YuSBAh5lJiUL@044f1S^xk5 literal 1201 zcmV;i1Wx-xT4*^jL0KkKS`fB@6Op2F_7Bi_3^7aRLR!pm?5F!Ly2-7$r$# zbVyYoQKdrgHTsN~(zd`?W7R1Ugdn_>JiS-dx}(MpjQYYVjc z)@`E$A8rqVh|IZa&7npKW}_x-6=tJ@AtY|5Inxc=bOW#nY5)O~B!QAbLjwtrr?{2o z0t_fJLP3PUgWkY^I*cO20HbVH5Fc626jcWtZ_9f%PH&kQ&5d6KyqPi09CRFu;L*%r zO-WEb9Y2>M{`t5IiSfx$l78$>es$x&J0@^!R1^*+DTE}MSY?A)N{vC4tvdcrGu3~I z1n36(WfmN?O$T#lN`}O!^(DhZ5KoE($;mb*<+R9uM$_aIBn-qU4#P^#+7q%m$nFaj z+}952xZiduS~L-%OOM}2>3vgLwl#bE5JHbEp;S{SV#a0G8?Z3_CJV2s6 zJDB)+sMF4=g<1&x>`Pqu`T7!G6;(oIyAq3K(OoIJQx-i~U4FC_^J!xCCdW`yT@?Y{ z(kU5%)cOFlrna@b9uR=YJ?Xb3hvY~iZveoMo5fg`9nrBuC25qUS3L`UF^V*8o%n%$R zQ4a4LW#)B(xOu@QJ@z_9{laIc1p-q=Jc)eE`64NzXxx?z$Ye~ZffWqsVp~T`EtInH zpn$f3VU$YX*9%xd?1k)7*;;`IClJyXvf&oB84aWpoaH|c(Ik7p5VkvllpbldTiyxPolNnnY1VN#I zA~Y2dLvE~6HnBuNiC9!sP`uce&%Y3ctnv_w_F8uClL-fs>B*#KCdf*F8+)-3(9xJf zDXR5gNS5Br^`|+g5TTsLC`84@tZsW}fwDu$tg(!P)hUT;3Mwc?j0nV}SRgeF&Q?rB zDsZgeI?9Rd5ht@MEh;MFoXPOfAtfM=`V2ClDYRDMIf4@I(nV=D&L<>K%vzQ-Jt$qS zrUKZ^)$mTKmtPP2UWB_`KNCAX&6gbsE7sO_&4!(6{2WU)Tuh`z5kCRW3y6s%h$CKr P|BJaIoG3_Wv-2{5(rE`p diff --git a/data/demo_workbook.rda b/data/demo_workbook.rda index 295619e79a33dca3cdf9be59316ca56d5dacbc9b..e5baff42cc2336fdc6909b9f6ace134e5cfb08a0 100644 GIT binary patch literal 108541 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%0DDQR0bt$Rk0_Oaw&OPO!_z_?a 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 literal 93393 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

a_*X>irbvv;avDM&seu!OP_ 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 literal 1033 zcmV+k1orzvT4*^jL0KkKS%f|{PXGfkf7k!}{GdVSfAVa@U)sO#-|#>H3;_TJ0Dxcs z01MCq-W-#+Dc#v@u7sjV=!Tjm1OUPS13&-+6B9sW(@h#=8fr2uRQ##>nMQyfr<5`P10kT$0B8UYQ|J174Lv|o7b3J&jb#*B5`xi6LW&^_bEZmy zO+Z8-D~O<7`B*i{YJ>#Wy^uZ(Ar`BI3Anc{5vmuurO(r5To}cjg7S-2V5~?t$Z15i zo_L~!GXeG08|~i5T@>QaJym7abjT}1KqPV42yVwcqg$HTKF04-cCA@U&{nZh3Q<{svbS=ByLJgd0X2ZS8hnX8M`Wx;BqThiL0rhYlz7V3{r`p;%)?WCcmQoINNm^ zvY2kdE#V!B0=&pp$+62fNg|yP(n}0OnuD{rW66M|WtZ-di={R~tduW)XRe(_|$M33Mj5@%}0 zKMSHg3-&TV^ju;dBo zAv(sg-VlqGMqK(#x+fDLqNA|b-JExLwy?jk4XaEG0g4q0r;I+4sgjHyX2}^7hQduH z99|iUycsPDH{qBrl=+h{TnTQAT#01EBW(5+kS>*j-B|2uktMk!HTY#{W)v8+AlECc zuc>Ox6%0$QOsbDj_Ja#VV(OPOvI4~*VchAwMdfVWCrW7Acn(C~Fo{-lI;kizKqjR; zD%<$M8>v&ir#rK2!$^EJ%pG)}z#+U4P7`?vL3|>X(m^d|2D+wDD7F{?+)g*YkxNxj zn5;HIB{)ZDg$Q7d*+Dhyo~a~KW))2-!(kXQU~)L3;hp5}%_%-g`TLbq&%Z12!zK&m z{A-Iaed2+jp$O{o2&W5L-K4sbU;|i+2(t9RqB0oTusOtmuuP&*ESWu%F(r{y6rzH3;_TJ0Dxcs z01MCrS-sttUAr5bGBR*VniD31r?!bB@{nW$+NRS`Xc_?1X$R_!G|&gBqd}lbBAx_k z1w7FViKnFUjWlQg0009(02*inrjt`5Q}R*dPbsF!Gf|T z27ti;G&Iv78X7dn0f-s^5-Jj8(VBxtr~otoXaE2J0000PD*Aqw%4HwmDB1v(_92W! zm~uuIAc3$$5|t+nA`?3jOiDv&5*d#DR|&OKLjhZDr#>he)O8p~0~)T-_Q|-F)7#TL za-f?^h@N69pX`ZXB4AXj(9lE?z=%PUNp!0zRI8&hr4JdhNnq;c1YpE~R;mC~CD#kO z+nUYoj>NiX`wCi%trXNCi4*G>7^H<``;V01GplWfNWNLp5hC1}mUS!`Fx_^MOY*!R zZ6H!4Bs2(3q#v*Z143dnlSw3?ViZh4C}PEF18E5jfOOM?o^>qCP_BMw&1J)A4ZIeM>0%azVar8l|%81C^BgnU;&#JZ2l3+kR4v;j+amSUo7Eij_ZDY=idu z#&thx%J@%t{3>lIF(rXirQ`Nr{0S$vh1hQxkk0EK(kA$DZ(hfeBsV6*Wkv|tZ5j&x zC#3xxr`B9WuA_%tZFS+nIFloEHdv2Q1(y%O$&3=ycUg5!Jxb~^h)pLRyl)}kVhvr= z5;I@jKOC7MFm%_^NOUNP&&P>dPg9vih4GptNVUXDYPnS{R*EfGV?w?VI|yYJOJzva zu~u|jZGOrO%!+Mcm|s*q#sP(}*lqD_S}ZFuXl3c4C2Tj>Eb7zYN~=t!#F`9w2e*BF z@d{cf)mAcMrMil0J3^&q-9w6PITpjZU&(1JvrGxRGtnIGGsviSSZSIFwc$Kii(4|YlsMLmQ+HiC#;`d|wx*4XaR|L}yD3l6RXsu>FUQ0TasTLF(RHQAa xp|qJsd=i6i8FeF4h4;ee>!}{c>ClG8g77_*?8`4v$Wg6@&l) literal 1178 zcmV;L1ZDd|T4*^jL0KkKS?xp$CIACI|JVQf{GdSN|MLICU)sO#-|#>H3;_TJ0Dxcs z01MCrK5MpZPC3p*QG}{`Ax~4(^&X(p$pFwEqa#figAiyNQK6tT^$h^i2}FjNniTS$ znwd;$WZGoXX`nRF14BRtfuW!P5~rlp$fgo{YI>W=FjLYrdVn+l4^RLA4Kx7t2L_EA z27^Fk#0Ex&Kmci`KmY>-01_x9%1w-$_4GGs!l!(=>9!Od6(xAyy-}|eE7|NmEtELcF_ns?L-&OwBdL1v ztd?1AG~yO|pddCNSxE^E0u-7-h9Lo=Fk1>?Nqz$AbHUaSez%*DQh7>_U z08~v3zpaH3vwwtd7zP&IA14QP3d#*6y{u>EcZM)|Krt1h3KU$Ecw4PB8rD*yIHqM# z*n=l>bw!fSrM~2qDAtuj%0;zIsbtKAw={r@*wpm3lvKA}__UmVHVa-JN1*v}J-jb1 z&1lX=rDW$6?rfYRP=b%;ZAp}!vIcYw{sOHBjTEgX%ZYbG#>Y6{PMdIry8_rSax?f| zB=v&r)f69L5!AQm6(Y$2VmjQ?H7HJ`EP1j15!cq^MCBc3N017lSC!BH3d@lMtE}J zkrw;gu7fp2IhrsF6c2f@F@kwxcvo&T?UrseP$^9>(#2I9TG?JvF`6R>HgOGaUh7~K zZ=*7*3Iz*NCy}7)be{?a6rm`V-G)o~8r9750!;8|bNJ0sK+Lu$oyuZYn?zhfp(~ak z*@^xeh%xRaBEW)83KIM{S(GJeI%?I^ux1TCRc7firspR=8tsHJjjr_K**MelVkd6w4sAXad z7npnR5XBn!4m;kQsMAxul<#diSZdDCPb2Mdb66IZ7Vg+hDxmq*gVbUeGg3!FvJQ5S zW!mIGriVQx5$i0%pex}vlFii`jKyQp=*1!zP-Tk1YP5dBkx|SkBq&lvRF+IG$x{x) sL%pWB(dNnP-&{W&Rqf$8kl4_5gZ8YZ$cZT}6pnFsBvXY64%9%RV3Uap>;M1& diff --git a/inst/CITATION b/inst/CITATION index cac3633..8229a53 100644 --- a/inst/CITATION +++ b/inst/CITATION @@ -1,16 +1,16 @@ -citHeader("To cite a11ytables in publications use:") +citHeader("To cite aftables in publications use:") citEntry( entry = "Manual", - title = "a11ytables: Create Spreadsheet Publications Following GSS Best Practice", + title = "aftables: Create Spreadsheet Publications Following GSS Best Practice", author = person(given = "Matt", family = "Dray", role = c("aut", "cre"), email = "mwdray@gmail.com"), year = "2021", organization = "Crown Copyright", - url = "https://github.com/best-practice-and-impact/a11ytables", + url = "https://github.com/best-practice-and-impact/aftables", textVersion = paste( "Dray M (2021)", - "a11ytables: Create Spreadsheet Publications Following GSS Best Practice,", + "aftables: Create Spreadsheet Publications Following GSS Best Practice,", "Crown Copyright,", - "https://github.com/best-practice-and-impact/a11ytables" + "https://github.com/best-practice-and-impact/aftables" ) ) diff --git a/inst/rstudio/addins.dcf b/inst/rstudio/addins.dcf index 447c04b..61aa786 100644 --- a/inst/rstudio/addins.dcf +++ b/inst/rstudio/addins.dcf @@ -1,12 +1,12 @@ -Name: Insert 'a11ytable' Template -Description: Insert at the cursor a template for create_a11ytable() from the - 'a11ytable' package, pre-filled with example information. -Binding: at_template_a11ytable +Name: Insert 'aftable' Template +Description: Insert at the cursor a template for create_aftable() from the + 'aftable' package, pre-filled with example information. +Binding: at_template_aftable Interactive: false -Name: Insert Full 'a11ytables' Template Workflow +Name: Insert Full 'aftables' Template Workflow Description: Insert at the cursor (a) templates for cover, contents and notes - tables, and (b) create_a11ytable(), which are all pre-filled with example + tables, and (b) create_aftable(), which are all pre-filled with example information. Binding: at_template_workflow Interactive: false diff --git a/man/a11ytables-package.Rd b/man/aftables-package.Rd similarity index 68% rename from man/a11ytables-package.Rd rename to man/aftables-package.Rd index 5093372..f4e3728 100644 --- a/man/a11ytables-package.Rd +++ b/man/aftables-package.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/a11ytables-package.R +% Please edit documentation in R/aftables-package.R \docType{package} -\name{a11ytables-package} -\alias{a11ytables} -\alias{a11ytables-package} -\title{a11ytables: Create Spreadsheet Publications Following Best Practice} +\name{aftables-package} +\alias{aftables} +\alias{aftables-package} +\title{aftables: Create Spreadsheet Publications Following Best Practice} \description{ \if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}} @@ -13,9 +13,9 @@ Generate spreadsheet publications that follow best practice guidance from the UK \seealso{ Useful links: \itemize{ - \item \url{https://best-practice-and-impact.github.io/a11ytables/} - \item \url{https://github.com/best-practice-and-impact/a11ytables} - \item Report bugs at \url{https://github.com/best-practice-and-impact/a11ytables/issues} + \item \url{https://best-practice-and-impact.github.io/aftables/} + \item \url{https://github.com/best-practice-and-impact/aftables} + \item Report bugs at \url{https://github.com/best-practice-and-impact/aftables/issues} } } diff --git a/man/as_a11ytable.Rd b/man/as_a11ytable.Rd deleted file mode 100644 index 304e66c..0000000 --- a/man/as_a11ytable.Rd +++ /dev/null @@ -1,26 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/a11ytable.R -\name{as_a11ytable} -\alias{as_a11ytable} -\alias{is_a11ytable} -\title{Coerce To An 'a11ytable' Object} -\usage{ -as_a11ytable(x) - -is_a11ytable(x) -} -\arguments{ -\item{x}{A data.frame object to coerce.} -} -\value{ -\code{as_a11ytable} returns an object of class a11ytable if possible. -\code{is_a11ytable} returns \code{TRUE} if the object has class -a11ytable, otherwise \code{FALSE}. -} -\description{ -Functions to check if an object is an a11ytable, or coerce it if possible. -} -\examples{ -is_a11ytable(demo_a11ytable) - -} diff --git a/man/as_aftable.Rd b/man/as_aftable.Rd new file mode 100644 index 0000000..6b2e007 --- /dev/null +++ b/man/as_aftable.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/aftable.R +\name{as_aftable} +\alias{as_aftable} +\alias{is_aftable} +\title{Coerce To An 'aftable' Object} +\usage{ +as_aftable(x) + +is_aftable(x) +} +\arguments{ +\item{x}{A data.frame object to coerce.} +} +\value{ +\code{as_aftable} returns an object of class aftable if possible. +\code{is_aftable} returns \code{TRUE} if the object has class +aftable, otherwise \code{FALSE}. +} +\description{ +Functions to check if an object is an aftable, or coerce it if possible. +} +\examples{ +is_aftable(demo_aftable) + +} diff --git a/man/at_template_a11ytable.Rd b/man/at_template_a11ytable.Rd deleted file mode 100644 index 92caaab..0000000 --- a/man/at_template_a11ytable.Rd +++ /dev/null @@ -1,12 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/addin.R -\name{at_template_a11ytable} -\alias{at_template_a11ytable} -\title{Insert Demo 'create_a11ytable' Template} -\usage{ -at_template_a11ytable() -} -\description{ -Insert at the cursor a template for \code{\link{create_a11ytable}} from the -'a11ytable' package, pre-filled with demo data. -} diff --git a/man/at_template_aftable.Rd b/man/at_template_aftable.Rd new file mode 100644 index 0000000..e444011 --- /dev/null +++ b/man/at_template_aftable.Rd @@ -0,0 +1,12 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/addin.R +\name{at_template_aftable} +\alias{at_template_aftable} +\title{Insert Demo 'create_aftable' Template} +\usage{ +at_template_aftable() +} +\description{ +Insert at the cursor a template for \code{\link{create_aftable}} from the +'aftable' package, pre-filled with demo data. +} diff --git a/man/at_template_workflow.Rd b/man/at_template_workflow.Rd index 9c1d2a4..a77835d 100644 --- a/man/at_template_workflow.Rd +++ b/man/at_template_workflow.Rd @@ -2,12 +2,12 @@ % Please edit documentation in R/addin.R \name{at_template_workflow} \alias{at_template_workflow} -\title{Insert Full Demo 'a11ytables' Template Workflow} +\title{Insert Full Demo 'aftables' Template Workflow} \usage{ at_template_workflow() } \description{ Insert at the cursor (a) demo templates for cover, contents and notes -tables, and (b) a call to \code{\link{create_a11ytable}} pre-filled with +tables, and (b) a call to \code{\link{create_aftable}} pre-filled with demo data. } diff --git a/man/create_a11ytable.Rd b/man/create_aftable.Rd similarity index 90% rename from man/create_a11ytable.Rd rename to man/create_aftable.Rd index 9ee5c50..6ca1e44 100644 --- a/man/create_a11ytable.Rd +++ b/man/create_aftable.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/a11ytable.R -\name{create_a11ytable} -\alias{create_a11ytable} -\title{Create An 'a11ytable' Object} +% Please edit documentation in R/aftable.R +\name{create_aftable} +\alias{create_aftable} +\title{Create An 'aftable' Object} \usage{ -create_a11ytable( +create_aftable( tab_titles, sheet_types = c("cover", "contents", "notes", "tables"), sheet_titles, @@ -48,10 +48,10 @@ type 'tables', but can also be used for sheet types 'contents' and supplied as a list), one per sheet. See details.} } \value{ -An object with classes 'a11ytable', 'tbl' and 'data.frame'. +An object with classes 'aftable', 'tbl' and 'data.frame'. } \description{ -Create a new a11ytable-class object, which is a special data.frame that +Create a new aftable-class object, which is a special data.frame that contains all the information needed in your output spreadsheet. In turn, the object created by this function can be used to populate an 'openxlsx' Workbook-class object with the function \code{\link{generate_workbook}}. @@ -113,8 +113,8 @@ cover_list <- list( "Section 1" = c("First row of Section 1.", "Second row of Section 1."), "Section 2" = "The only row of Section 2.", "Section 3" = c( - "[Website](https://best-practice-and-impact.github.io/a11ytables/)", - "[Email address](mailto:fake.address@a11ytables.com)" + "[Website](https://best-practice-and-impact.github.io/aftables/)", + "[Email address](mailto:fake.address@aftables.com)" ) ) @@ -147,14 +147,14 @@ table_1_df <- data.frame( table_2_df <- data.frame(Category = LETTERS[1:10], Numeric = 1:10) -# Create 'a11ytables' object +# Create 'aftables' object x <- - a11ytables::create_a11ytable( + aftables::create_aftable( tab_titles = c("Cover", "Contents", "Notes", "Table_1", "Table_2"), sheet_types = c("cover", "contents", "notes", "tables", "tables"), sheet_titles = c( - "The 'a11ytables' Demo Workbook", + "The 'aftables' Demo Workbook", "Table of contents", "Notes", "Table 1: First Example Sheet", @@ -170,21 +170,21 @@ x <- NA_character_, "A custom row.", c( - "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/a11ytables/)", + "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/aftables/)", "Second custom row." ), "A custom row." ), sources = c( rep(NA_character_, 3), - "[The Source Material, 2024.](https://best-practice-and-impact.github.io/a11ytables/)", + "[The Source Material, 2024.](https://best-practice-and-impact.github.io/aftables/)", "The Source Material, 2024." ), tables = list(cover_list, contents_df, notes_df, table_1_df, table_2_df) ) -# Test that 'a11ytable' is one of the object's classes -is_a11ytable(x) +# Test that 'aftable' is one of the object's classes +is_aftable(x) # Look at the structure of the object str(x, max.level = 2) diff --git a/man/demo_a11ytable.Rd b/man/demo_aftable.Rd similarity index 84% rename from man/demo_a11ytable.Rd rename to man/demo_aftable.Rd index 1b861bb..b935077 100644 --- a/man/demo_a11ytable.Rd +++ b/man/demo_aftable.Rd @@ -1,9 +1,9 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} -\name{demo_a11ytable} -\alias{demo_a11ytable} -\title{A Demo 'a11ytables' Object} +\name{demo_aftable} +\alias{demo_aftable} +\title{A Demo 'aftables' Object} \format{ A data.frame with 6 rows and 7 columns: \describe{ @@ -17,10 +17,10 @@ A data.frame with 6 rows and 7 columns: } } \usage{ -demo_a11ytable +demo_aftable } \description{ -A pre-created 'a11ytables' object ready to be converted to an 'openxlsx' +A pre-created 'aftables' object ready to be converted to an 'openxlsx' Workbook-class object with \code{\link{generate_workbook}}. } \keyword{datasets} diff --git a/man/demo_df.Rd b/man/demo_df.Rd index 8acdf09..189695b 100644 --- a/man/demo_df.Rd +++ b/man/demo_df.Rd @@ -20,8 +20,8 @@ A data.frame with 6 rows and 7 columns: demo_df } \description{ -A pre-created data.frame ready to be converted to an a11ytables-class object -with \code{\link{as_a11ytable}} and then an 'openxlsx' Workbook-class object +A pre-created data.frame ready to be converted to an aftables-class object +with \code{\link{as_aftable}} and then an 'openxlsx' Workbook-class object with \code{\link{generate_workbook}}. } \keyword{datasets} diff --git a/man/demo_workbook.Rd b/man/demo_workbook.Rd index 3d6868a..83fa41b 100644 --- a/man/demo_workbook.Rd +++ b/man/demo_workbook.Rd @@ -12,6 +12,6 @@ demo_workbook } \description{ A pre-created 'openxlsx' Workbook'-class object generated from an -a11ytables-class object with \code{\link{generate_workbook}}. +aftables-class object with \code{\link{generate_workbook}}. } \keyword{datasets} diff --git a/man/generate_workbook.Rd b/man/generate_workbook.Rd index df620ad..274c329 100644 --- a/man/generate_workbook.Rd +++ b/man/generate_workbook.Rd @@ -2,13 +2,13 @@ % Please edit documentation in R/workbook.R \name{generate_workbook} \alias{generate_workbook} -\title{Generate A Workbook Object From An 'a11ytable'} +\title{Generate A Workbook Object From An 'aftable'} \usage{ -generate_workbook(a11ytable) +generate_workbook(aftable) } \arguments{ -\item{a11ytable}{An a11ytable-class object created using -\code{\link{create_a11ytable}} (or \code{\link{as_a11ytable}}), which +\item{aftable}{An aftable-class object created using +\code{\link{create_aftable}} (or \code{\link{as_aftable}}), which contains the data and information needed to create a workbook.} } \value{ @@ -16,17 +16,17 @@ A Workbook-class object. } \description{ Populate an 'openxlsx' Workbook-class object with content from an -a11ytable-class object. In turn, the output can be passed to +aftable-class object. In turn, the output can be passed to \code{\link[openxlsx]{saveWorkbook}} from 'openxlsx' } \examples{ -# Convert an a11ytable to a Workbook-class object -x <- generate_workbook(demo_a11ytable) +# Convert an aftable to a Workbook-class object +x <- generate_workbook(demo_aftable) class(x) # As above, using a compliant data.frame and the base pipe y <- demo_df |> - as_a11ytable() |> + as_aftable() |> generate_workbook() } diff --git a/man/mtcars_df.Rd b/man/mtcars_df.Rd index 8365ccd..c99d500 100644 --- a/man/mtcars_df.Rd +++ b/man/mtcars_df.Rd @@ -26,8 +26,8 @@ Superseded. mtcars_df and \code{\link{mtcars_df2}} have been superseded in favour of \code{\link{demo_df}}. A modified version of the mtcars dataset prepared into a data.frame structure -ready for coercion to an a11ytables-class object with -\code{\link{as_a11ytable}}. Uses a dataframe as input to the cover table; +ready for coercion to an aftables-class object with +\code{\link{as_aftable}}. Uses a dataframe as input to the cover table; \code{\link{mtcars_df}} uses a list as input to the cover table. } \details{ diff --git a/man/mtcars_df2.Rd b/man/mtcars_df2.Rd index f2a1c61..cc6f057 100644 --- a/man/mtcars_df2.Rd +++ b/man/mtcars_df2.Rd @@ -26,8 +26,8 @@ Superseded. \code{\link{mtcars_df}} and mtcars_df2 have been superseded in favour of \code{\link{demo_df}}. A modified version of the mtcars dataset prepared into a data.frame structure -ready for coercion to an a11ytables-class object with -\code{\link{as_a11ytable}}. +ready for coercion to an aftables-class object with +\code{\link{as_aftable}}. } \details{ Uses a list as input to the cover table (implemented in version 0.2), whereas diff --git a/man/summary.a11ytable.Rd b/man/summary.a11ytable.Rd deleted file mode 100644 index 946c712..0000000 --- a/man/summary.a11ytable.Rd +++ /dev/null @@ -1,26 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/a11ytable.R -\name{summary.a11ytable} -\alias{summary.a11ytable} -\title{Summarise An 'a11ytable' Object} -\usage{ -\method{summary}{a11ytable}(object, ...) -} -\arguments{ -\item{object}{An a11ytable-class object for which to get a summary.} - -\item{...}{Other arguments to pass.} -} -\description{ -A concise result summary of an a11ytable-class object to see information -about the sheet content. Shows a numbered list of sheets with each tab title, -sheet type and table dimensions. -} -\examples{ -# Print a concise summary of the a11ytable-class object -summary(demo_a11ytable) - -# Alternatively, look at the structure -str(demo_a11ytable, max.level = 2) - -} diff --git a/man/summary.aftable.Rd b/man/summary.aftable.Rd new file mode 100644 index 0000000..570816e --- /dev/null +++ b/man/summary.aftable.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/aftable.R +\name{summary.aftable} +\alias{summary.aftable} +\title{Summarise An 'aftable' Object} +\usage{ +\method{summary}{aftable}(object, ...) +} +\arguments{ +\item{object}{An aftable-class object for which to get a summary.} + +\item{...}{Other arguments to pass.} +} +\description{ +A concise result summary of an aftable-class object to see information +about the sheet content. Shows a numbered list of sheets with each tab title, +sheet type and table dimensions. +} +\examples{ +# Print a concise summary of the aftable-class object +summary(demo_aftable) + +# Alternatively, look at the structure +str(demo_aftable, max.level = 2) + +} diff --git a/man/tbl_sum.a11ytable.Rd b/man/tbl_sum.a11ytable.Rd deleted file mode 100644 index ea27a93..0000000 --- a/man/tbl_sum.a11ytable.Rd +++ /dev/null @@ -1,27 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/a11ytable.R -\name{tbl_sum.a11ytable} -\alias{tbl_sum.a11ytable} -\title{Provide A Succinct Summary Of An 'a11ytable' Object} -\usage{ -\method{tbl_sum}{a11ytable}(x, ...) -} -\arguments{ -\item{x}{An a11ytable-class object to summarise.} - -\item{...}{Other arguments to pass.} -} -\value{ -Named character vector. -} -\description{ -A brief text description of an a11ytable-class object. -} -\examples{ -# Print with description -print(demo_a11ytable) - -# Print description only (package 'tibble' must be installed) -tibble::tbl_sum(demo_a11ytable) - -} diff --git a/man/tbl_sum.aftable.Rd b/man/tbl_sum.aftable.Rd new file mode 100644 index 0000000..ebcb9e0 --- /dev/null +++ b/man/tbl_sum.aftable.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/aftable.R +\name{tbl_sum.aftable} +\alias{tbl_sum.aftable} +\title{Provide A Succinct Summary Of An 'aftable' Object} +\usage{ +\method{tbl_sum}{aftable}(x, ...) +} +\arguments{ +\item{x}{An aftable-class object to summarise.} + +\item{...}{Other arguments to pass.} +} +\value{ +Named character vector. +} +\description{ +A brief text description of an aftable-class object. +} +\examples{ +# Print with description +print(demo_aftable) + +# Print description only (package 'tibble' must be installed) +tibble::tbl_sum(demo_aftable) + +} diff --git a/tests/testthat.R b/tests/testthat.R index bbb7195..d60f9d0 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -1,4 +1,4 @@ library(testthat) -library(a11ytables) +library(aftables) -test_check("a11ytables") +test_check("aftables") diff --git a/tests/testthat/_snaps/a11ytable.md b/tests/testthat/_snaps/a11ytable.md index 1454303..902ddbe 100644 --- a/tests/testthat/_snaps/a11ytable.md +++ b/tests/testthat/_snaps/a11ytable.md @@ -1,6 +1,6 @@ # tbl output looks as intended - # a11ytable: 3 x 7 + # aftable: 3 x 7 tab_title sheet_type sheet_title blank_cells source custom_rows table 1 A cover A diff --git a/tests/testthat/_snaps/addins.md b/tests/testthat/_snaps/addins.md index e4f11d4..5865499 100644 --- a/tests/testthat/_snaps/addins.md +++ b/tests/testthat/_snaps/addins.md @@ -1,8 +1,8 @@ -# string_create_a11ytable skeleton is okay +# string_create_aftable skeleton is okay - [1] "my_a11ytable <-\n a11ytables::create_a11ytable(\n tab_titles = c(\"Cover\", \"Contents\", \"Notes\", \"Table_1\", \"Table_2\"),\n sheet_types = c(\"cover\", \"contents\", \"notes\", \"tables\", \"tables\"),\n sheet_titles = c(\n \"The 'a11ytables' Demo Workbook\",\n \"Table of contents\",\n \"Notes\",\n \"Table 1: First Example Sheet\",\n \"Table 2: Second Example Sheet\"\n ),\n blank_cells = c(\n rep(NA_character_, 3),\n \"Blank cells indicate that there's no note in that row.\",\n NA_character_\n ),\n custom_rows = list(\n NA_character_,\n \"A custom row in the Contents sheet.\",\n NA_character_,\n c(\n \"First custom row for Table 1.\",\n \"A second custom row [with a hyperlink.](https://best-practice-and-impact.github.io/a11ytables/)\"\n ),\n \"A custom row for Table 2\"\n ),\n sources = c(\n rep(NA_character_, 3),\n \"[The Source Material, 2024](https://best-practice-and-impact.github.io/a11ytables/)\",\n \"The Source Material, 2024\"\n ),\n tables = list(cover_list, contents_df, notes_df, table_1_df, table_2_df)\n )" + [1] "my_aftable <-\n aftables::create_aftable(\n tab_titles = c(\"Cover\", \"Contents\", \"Notes\", \"Table_1\", \"Table_2\"),\n sheet_types = c(\"cover\", \"contents\", \"notes\", \"tables\", \"tables\"),\n sheet_titles = c(\n \"The 'aftables' Demo Workbook\",\n \"Table of contents\",\n \"Notes\",\n \"Table 1: First Example Sheet\",\n \"Table 2: Second Example Sheet\"\n ),\n blank_cells = c(\n rep(NA_character_, 3),\n \"Blank cells indicate that there's no note in that row.\",\n NA_character_\n ),\n custom_rows = list(\n NA_character_,\n \"A custom row in the Contents sheet.\",\n NA_character_,\n c(\n \"First custom row for Table 1.\",\n \"A second custom row [with a hyperlink.](https://best-practice-and-impact.github.io/aftables/)\"\n ),\n \"A custom row for Table 2\"\n ),\n sources = c(\n rep(NA_character_, 3),\n \"[The Source Material, 2024](https://best-practice-and-impact.github.io/aftables/)\",\n \"The Source Material, 2024\"\n ),\n tables = list(cover_list, contents_df, notes_df, table_1_df, table_2_df)\n )" # string_tables_tibble skeleton is okay - [1] "cover_list <- list(\n \"Section 1\" = c(\"First row of Section 1.\", \"Second row of Section 1.\"),\n \"Section 2\" = \"The only row of Section 2.\",\n \"Section 3\" = c(\n \"[Website](https://best-practice-and-impact.github.io/a11ytables/)\",\n \"[Email address](mailto:fake.address@a11ytables.com)\"\n )\n)\n\ncontents_df <- data.frame(\n \"Sheet name\" = c(\"Notes\", \"Table 1\", \"Table 2\"),\n \"Sheet title\" = c(\n \"Notes used in this workbook\",\n \"First Example Sheet\",\n \"Second Example Sheet\"\n ),\n check.names = FALSE\n)\n\nnotes_df <- data.frame(\n \"Note number\" = paste(\"[note \", 1:2, \"]\"),\n \"Note text\" = c(\"First note.\", \"Second note.\"),\n check.names = FALSE\n)\n\ntable_1_df <- data.frame(\n Category = LETTERS[1:10],\n Numeric = 1:10,\n \"Numeric suppressed\" = c(1:4, \"[c]\", 6:9, \"[x]\"),\n \"Numeric thousands\" = abs(round(rnorm(10), 4) * 1e5),\n \"Numeric decimal\" = abs(round(rnorm(10), 5)),\n \"A column with a long name\" = 1:10,\n Notes = c(\"[note 1]\", rep(NA_character_, 4), \"[note 2]\", rep(NA_character_, 4)),\n check.names = FALSE\n)\n\ntable_2_df <- data.frame(Category = LETTERS[1:10], Numeric = 1:10)" + [1] "cover_list <- list(\n \"Section 1\" = c(\"First row of Section 1.\", \"Second row of Section 1.\"),\n \"Section 2\" = \"The only row of Section 2.\",\n \"Section 3\" = c(\n \"[Website](https://best-practice-and-impact.github.io/aftables/)\",\n \"[Email address](mailto:fake.address@aftables.com)\"\n )\n)\n\ncontents_df <- data.frame(\n \"Sheet name\" = c(\"Notes\", \"Table 1\", \"Table 2\"),\n \"Sheet title\" = c(\n \"Notes used in this workbook\",\n \"First Example Sheet\",\n \"Second Example Sheet\"\n ),\n check.names = FALSE\n)\n\nnotes_df <- data.frame(\n \"Note number\" = paste(\"[note \", 1:2, \"]\"),\n \"Note text\" = c(\"First note.\", \"Second note.\"),\n check.names = FALSE\n)\n\ntable_1_df <- data.frame(\n Category = LETTERS[1:10],\n Numeric = 1:10,\n \"Numeric suppressed\" = c(1:4, \"[c]\", 6:9, \"[x]\"),\n \"Numeric thousands\" = abs(round(rnorm(10), 4) * 1e5),\n \"Numeric decimal\" = abs(round(rnorm(10), 5)),\n \"A column with a long name\" = 1:10,\n Notes = c(\"[note 1]\", rep(NA_character_, 4), \"[note 2]\", rep(NA_character_, 4)),\n check.names = FALSE\n)\n\ntable_2_df <- data.frame(Category = LETTERS[1:10], Numeric = 1:10)" diff --git a/tests/testthat/test-a11ytable.R b/tests/testthat/test-a11ytable.R index c0b71d9..44a167e 100644 --- a/tests/testthat/test-a11ytable.R +++ b/tests/testthat/test-a11ytable.R @@ -1,11 +1,11 @@ -test_that("a11ytable can be created by hand (with list for cover)", { +test_that("aftable can be created by hand (with list for cover)", { # Uses demo_df, which has a list containing cover information in the # 'table' column. x <- suppressWarnings( - create_a11ytable( + create_aftable( tab_titles = demo_df$tab_title, sheet_types = demo_df$sheet_type, sheet_titles = demo_df$sheet_title, @@ -13,12 +13,12 @@ test_that("a11ytable can be created by hand (with list for cover)", { ) ) - expect_s3_class(x, class = "a11ytable") - expect_identical(class(x), c("a11ytable", "tbl", "data.frame")) + expect_s3_class(x, class = "aftable") + expect_identical(class(x), c("aftable", "tbl", "data.frame")) expect_error( suppressWarnings( - create_a11ytable( + create_aftable( tab_titles = demo_df$tab_title, sheet_types = "x", sheet_titles = demo_df$sheet_title, @@ -29,10 +29,10 @@ test_that("a11ytable can be created by hand (with list for cover)", { }) -test_that("a11ytable can be created by hand (with df for cover)", { +test_that("aftable can be created by hand (with df for cover)", { x <- suppressWarnings( - create_a11ytable( + create_aftable( tab_titles = demo_df$tab_title, sheet_types = demo_df$sheet_type, sheet_titles = demo_df$sheet_title, @@ -43,12 +43,12 @@ test_that("a11ytable can be created by hand (with df for cover)", { ) ) - expect_s3_class(x, class = "a11ytable") - expect_identical(class(x), c("a11ytable", "tbl", "data.frame")) + expect_s3_class(x, class = "aftable") + expect_identical(class(x), c("aftable", "tbl", "data.frame")) expect_error( suppressWarnings( - create_a11ytable( + create_aftable( tab_titles = demo_df$tab_title, sheet_types = "x", sheet_titles = demo_df$sheet_title, @@ -62,7 +62,7 @@ test_that("a11ytable can be created by hand (with df for cover)", { test_that("strings are not converted to factors", { x <- suppressWarnings( - create_a11ytable( + create_aftable( tab_titles = demo_df$tab_title, sheet_types = demo_df$sheet_type, sheet_titles = demo_df$sheet_title, @@ -79,70 +79,70 @@ test_that("strings are not converted to factors", { test_that("suitable objects can be coerced", { - x <- suppressWarnings(as_a11ytable(demo_df)) + x <- suppressWarnings(as_aftable(demo_df)) - expect_s3_class(x, class = "a11ytable") - expect_identical(class(x), c("a11ytable", "tbl", "data.frame")) + expect_s3_class(x, class = "aftable") + expect_identical(class(x), c("aftable", "tbl", "data.frame")) - expect_identical(is_a11ytable(x), TRUE) - expect_identical(is_a11ytable("x"), FALSE) + expect_identical(is_aftable(x), TRUE) + expect_identical(is_aftable("x"), FALSE) - expect_true(is_a11ytable(x)) - expect_false(is_a11ytable(mtcars)) + expect_true(is_aftable(x)) + expect_false(is_aftable(mtcars)) }) test_that("class validation works", { - expect_length(suppressWarnings(as_a11ytable(demo_df)), 7) + expect_length(suppressWarnings(as_aftable(demo_df)), 7) - expect_error(as_a11ytable(1)) - expect_error(as_a11ytable("x")) - expect_error(as_a11ytable(list())) - expect_error(as_a11ytable(data.frame())) + expect_error(as_aftable(1)) + expect_error(as_aftable("x")) + expect_error(as_aftable(list())) + expect_error(as_aftable(data.frame())) x <- demo_df names(x)[1] <- "foo" - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df x[["table"]] <- as.character(x[["table"]]) - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df[, 1:4] - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df[1, ] - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df x[x$sheet_type %in% c("cover", "contents"), "sheet_type"] <- "foo" - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df x[x$tab_title == "Table_2", "sheet_type"] <- "foo" - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df x$sheet_type <- NA_character_ - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df x$custom_rows <- NA_character_ - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df x$custom_rows <- rep(list(1), nrow(x)) - expect_error(as_a11ytable(x)) + expect_error(as_aftable(x)) x <- demo_df x[x$tab_title == "Table_2", "tab_title"] <- "Lorem_ipsum_dolor_sit_amet__consectetur_adipiscing" - expect_warning(as_a11ytable(x)) + expect_warning(as_aftable(x)) x <- demo_df x[x$tab_title == "Table_2", "tab_title"] <- "!?" - expect_warning(as_a11ytable(x)) + expect_warning(as_aftable(x)) x <- demo_df x[x$sheet_type == "notes", "table"][[1]] <- @@ -153,23 +153,23 @@ test_that("class validation works", { check.names = FALSE ) ) - expect_warning(as_a11ytable(x)) + expect_warning(as_aftable(x)) }) test_that("summary method works", { - x <- suppressWarnings(as_a11ytable(demo_df)) + x <- suppressWarnings(as_aftable(demo_df)) expect_output(summary(x)) }) -test_that("absence of note sheets doesn't prevent a11ytable formation", { +test_that("absence of note sheets doesn't prevent aftable formation", { df <- demo_df[demo_df$sheet_type != "notes", ] - suppressWarnings(x <- as_a11ytable(df)) + suppressWarnings(x <- as_aftable(df)) - expect_s3_class(x, "a11ytable") + expect_s3_class(x, "aftable") expect_s4_class(generate_workbook(x), "Workbook") }) @@ -181,7 +181,7 @@ test_that("tab_titles with starting numeral will error", { expect_error( with( demo_df, - create_a11ytable( + create_aftable( tab_titles = tab_title, sheet_types = sheet_type, sheet_titles = sheet_title, @@ -196,7 +196,7 @@ test_that("tab_titles with starting numeral will error", { test_that("non-conforming tab_titles are cleaned", { expect_warning( - create_a11ytable( + create_aftable( tab_titles = c("cover", "contents", "Table 2"), sheet_types = c("cover", "contents", "tables"), sheet_titles = c("Cover", "Contents", "Table"), @@ -219,7 +219,7 @@ test_that("tab_titles are unique", { expect_error( with( demo_df, - create_a11ytable( + create_aftable( tab_titles = tab_title, sheet_types = sheet_type, sheet_titles = sheet_title, @@ -232,7 +232,7 @@ test_that("tab_titles are unique", { test_that("tbl output looks as intended", { - x <- create_a11ytable( + x <- create_aftable( tab_titles = LETTERS[1:3], sheet_type = c("cover", "contents", "tables"), sheet_titles = LETTERS[1:3], @@ -244,25 +244,25 @@ test_that("tbl output looks as intended", { ) ) - expect_snapshot_output(as_a11ytable(x)) + expect_snapshot_output(as_aftable(x)) }) test_that("input other than data.frame is intercepted during validation", { - expect_error(.validate_a11ytable("x")) + expect_error(.validate_aftable("x")) x <- demo_df x[, "table"] <- "x" expect_error( - as_a11ytable(x), + as_aftable(x), "Column 'table' must be a listcol of data.frame objects." ) y <- subset(demo_df, select = -table) y[, "table"] <- list(rep(list("x"), nrow(y))) expect_error( - as_a11ytable(y), + as_aftable(y), "List-column 'table' must contain data.frame objects only." ) @@ -277,9 +277,9 @@ test_that("only one cover, contents, notes can be used", { notes_dupe <- rbind(demo_df, demo_df[demo_df$sheet_type == "notes", ]) - expect_error(as_a11ytable(cover_dupe)) - expect_error(as_a11ytable(contents_dupe)) - expect_error(as_a11ytable(notes_dupe)) + expect_error(as_aftable(cover_dupe)) + expect_error(as_aftable(contents_dupe)) + expect_error(as_aftable(notes_dupe)) }) @@ -294,10 +294,10 @@ test_that("NAs in certain columns cause failure", { table_na <- demo_df table_na$table <- NA_character_ - expect_error(as_a11ytable(tab_na)) - expect_error(as_a11ytable(type_na)) - expect_error(as_a11ytable(title_na)) - expect_error(as_a11ytable(table_na)) + expect_error(as_aftable(tab_na)) + expect_error(as_aftable(type_na)) + expect_error(as_aftable(title_na)) + expect_error(as_aftable(table_na)) }) @@ -307,7 +307,7 @@ test_that("Note mismatch is caught", { x[x$sheet_type == "contents", "table"][[1]] <- list(data.frame(x = c("x", "y"), y = c("x", "y"))) - expect_warning(as_a11ytable(x), "You have a 'notes' sheet") + expect_warning(as_aftable(x), "You have a 'notes' sheet") z <- demo_df[!demo_df$tab_title == "Table_2", ] z[z$sheet_type == "contents", "table"][[1]] <- @@ -320,7 +320,7 @@ test_that("Note mismatch is caught", { ) ) - expect_warning(as_a11ytable(z), "Some notes are in the notes sheet") + expect_warning(as_aftable(z), "Some notes are in the notes sheet") }) @@ -329,7 +329,7 @@ test_that("warning is raised if a source statement is missing", { demo_df[demo_df$tab_title == "Table_1", "source"] <- NA_character_ expect_warning( - as_a11ytable(demo_df), + as_aftable(demo_df), "One of your tables is missing a source statement." ) @@ -339,7 +339,7 @@ test_that("warning is raised if there's no blank cells but there is a reason", { demo_df[demo_df$tab_title == "Table_2", "blank_cells"] <- "x" expect_warning( - as_a11ytable(demo_df), + as_aftable(demo_df), "There's no blank cells in these tables" ) @@ -389,23 +389,23 @@ test_that("tab titles are cleaned and warnings provided", { x <- demo_df x[1, "tab_title"] <- long_title - expect_warning(as_a11ytable(x)) + expect_warning(as_aftable(x)) x <- demo_df x[1, "tab_title"] <- "Cover!" - expect_warning(as_a11ytable(x)) + expect_warning(as_aftable(x)) x <- demo_df x["tab_title"][5, ] <- long_title expect_warning( - .warn_a11ytable(x), + .warn_aftable(x), "Each tab_title must be shorter than 31 characters." ) x <- demo_df x["tab_title"][5, ] <- "Table-1!" expect_warning( - .warn_a11ytable(x), + .warn_aftable(x), "Each tab_title must contain only letters, numbers or underscores." ) @@ -414,13 +414,13 @@ test_that("tab titles are cleaned and warnings provided", { test_that("input column names are okay", { names(demo_df)[1] <- "x" - expect_error(as_a11ytable(demo_df)) + expect_error(as_aftable(demo_df)) }) test_that("character class columns are caught if not character class", { demo_df[, "sheet_type"] <- seq_len(nrow(demo_df)) - expect_error(as_a11ytable(demo_df)) + expect_error(as_aftable(demo_df)) }) diff --git a/tests/testthat/test-addins.R b/tests/testthat/test-addins.R index 23878c5..c7fd322 100644 --- a/tests/testthat/test-addins.R +++ b/tests/testthat/test-addins.R @@ -1,6 +1,6 @@ -test_that("string_create_a11ytable skeleton is okay", { - expect_snapshot_output(string_create_a11ytable()) +test_that("string_create_aftable skeleton is okay", { + expect_snapshot_output(string_create_aftable()) }) test_that("string_tables_tibble skeleton is okay", { diff --git a/tests/testthat/test-workbook.R b/tests/testthat/test-workbook.R index 52e37a4..977622a 100644 --- a/tests/testthat/test-workbook.R +++ b/tests/testthat/test-workbook.R @@ -1,15 +1,15 @@ test_that("workbook object is created", { - x <- suppressWarnings(generate_workbook(as_a11ytable(demo_df))) + x <- suppressWarnings(generate_workbook(as_aftable(demo_df))) expect_s4_class(x, class = "Workbook") expect_identical(class(x)[1], "Workbook") }) -test_that("a11ytable is passed", { +test_that("aftable is passed", { - x <- suppressWarnings(as_a11ytable(demo_df)) + x <- suppressWarnings(as_aftable(demo_df)) expect_error(generate_workbook("x")) expect_error(generate_workbook(1)) @@ -21,17 +21,17 @@ test_that("a11ytable is passed", { test_that(".stop_bad_input works as intended", { wb <- openxlsx::createWorkbook() - a11ytable <- as_a11ytable(demo_df) + aftable <- as_aftable(demo_df) - expect_error(.stop_bad_input("x", a11ytable, "cover")) - expect_error(.stop_bad_input(wb, a11ytable, 1)) + expect_error(.stop_bad_input("x", aftable, "cover")) + expect_error(.stop_bad_input(wb, aftable, 1)) }) test_that("hyperlinks are generated on the cover page", { # demo dataset has two hyperlinks on the cover - y <- suppressWarnings(generate_workbook(as_a11ytable(demo_df))) + y <- suppressWarnings(generate_workbook(as_aftable(demo_df))) expect_length(y$worksheets[[1]]$hyperlinks, 2) }) diff --git a/vignettes/a11ytables.Rmd b/vignettes/aftables.Rmd similarity index 69% rename from vignettes/a11ytables.Rmd rename to vignettes/aftables.Rmd index d085681..795da86 100644 --- a/vignettes/a11ytables.Rmd +++ b/vignettes/aftables.Rmd @@ -1,8 +1,8 @@ --- -title: "Introduction to {a11ytables}" +title: "Introduction to {aftables}" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{a11ytables} + %\VignetteIndexEntry{aftables} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -16,32 +16,32 @@ knitr::opts_chunk$set( ## Purpose -This vignette demonstrates how to use {a11ytables} to generate a spreadsheet output that automatically follows [best practice](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/). +This vignette demonstrates how to use {aftables} to generate a spreadsheet output that automatically follows [best practice](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/). ## Installation -Install the package [from GitHub](https://github.com/best-practice-and-impact/a11ytables) using [{remotes}](https://remotes.r-lib.org/). +Install the package [from GitHub](https://github.com/best-practice-and-impact/aftables) using [{remotes}](https://remotes.r-lib.org/). ```{r install, eval=FALSE} install.packages("remotes") # if not already installed -remotes::install_github("best-practice-and-impact/a11ytables") +remotes::install_github("best-practice-and-impact/aftables") ``` -The package depends on [{openxlsx}](https://ycphs.github.io/openxlsx/) and [{pillar}](https://pillar.r-lib.org/), which are also installed with {a11ytables}. +The package depends on [{openxlsx}](https://ycphs.github.io/openxlsx/) and [{pillar}](https://pillar.r-lib.org/), which are also installed with {aftables}. ## Workflow -Having installed the {a11ytables} package, there are three steps to generating a compliant spreadsheet: +Having installed the {aftables} package, there are three steps to generating a compliant spreadsheet: -1. Use `create_a11ytable()` to create a special dataframe (with class 'a11ytable') that contains all the content that will go in your spreadsheet -1. Pass the output to `generate_workbook()` to convert the a11ytable to {openxlsx}'s 'Workbook' class, which adds spreadsheet structure and styles +1. Use `create_aftable()` to create a special dataframe (with class 'aftable') that contains all the content that will go in your spreadsheet +1. Pass the output to `generate_workbook()` to convert the aftable to {openxlsx}'s 'Workbook' class, which adds spreadsheet structure and styles 1. Pass the output to `openxlsx::saveWorkbook()` to write out to an xlsx file (or `openxlsx::openXL()` to open a temporary copy) -You can use the package's [RStudio Addin](https://rstudio.github.io/rstudioaddins/), which is installed with {a11ytables}, to insert a pre-filled demo skeleton of this workflow (RStudio users only). +You can use the package's [RStudio Addin](https://rstudio.github.io/rstudioaddins/), which is installed with {aftables}, to insert a pre-filled demo skeleton of this workflow (RStudio users only). -### 1. Create an a11ytable +### 1. Create an aftable -Each argument to `create_a11ytable()` provides the information needed to construct each sheet in the spreadsheet. +Each argument to `create_aftable()` provides the information needed to construct each sheet in the spreadsheet. | Argument | Required | Type | Accepted values | Explanation | | :--- | :- | :--- | :--- | :------ | @@ -53,13 +53,13 @@ Each argument to `create_a11ytable()` provides the information needed to constru | `sources` | No | Character vector | | A sentence provides the source of the data found in each table (if applicable, likely only needed for sheets with `sheet_types` of 'table') | | `tables` | Yes | List of dataframes (although the cover sheet content can be provided as a list object) | | The main content for each sheet, expressed as flat ([probably tidy](https://www.jstatsoft.org/article/view/v059i10)) dataframes of rows and columns (though the cover can be a list) | -You can read more about these arguments and their requirements in the function's help pages, which you can access by running `?create_a11ytable` in the R console. See also the [terminology vignette](https://best-practice-and-impact.github.io/a11ytables/articles/terminology), `vignette("terminology", "a11ytables")`, for these terms and more. +You can read more about these arguments and their requirements in the function's help pages, which you can access by running `?create_aftable` in the R console. See also the [terminology vignette](https://best-practice-and-impact.github.io/aftables/articles/terminology), `vignette("terminology", "aftables")`, for these terms and more. #### Pre-prepare tables -Rather than pass a big list of dataframes directly to the `tables` argument of `create_a11ytable()`, it's preferable to prepare them first into their own named objects. +Rather than pass a big list of dataframes directly to the `tables` argument of `create_aftable()`, it's preferable to prepare them first into their own named objects. -Below are some demo tables that we will later pass to `create_a11ytable()`. I've used `tibble::tribble()` for human-readable row-by-row dataframe construction, but you can just use `data.frame()` if you want. +Below are some demo tables that we will later pass to `create_aftable()`. I've used `tibble::tribble()` for human-readable row-by-row dataframe construction, but you can just use `data.frame()` if you want. Note that you can use the RStudio Addin 'Insert table templates using 'tibble'' and 'Insert table templates using 'data.frame'' to insert a demo skeleton into your R script. @@ -72,8 +72,8 @@ cover_list <- list( "Section 1" = c("First row of Section 1.", "Second row of Section 1."), "Section 2" = "The only row of Section 2.", "Section 3" = c( - "[Website](https://best-practice-and-impact.github.io/a11ytables/)", - "[Email address](mailto:fake.address@a11ytables.com)" + "[Website](https://best-practice-and-impact.github.io/aftables/)", + "[Email address](mailto:fake.address@aftables.com)" ) ) ``` @@ -144,9 +144,9 @@ table_2_df See [the best practice guidance](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/) for more information on how to present data in these tables. -#### Create a11ytable +#### Create aftable -Now we can construct an a11ytable by passing the required sheet elements as character vectors with `c()`—or a `list()` in the case of the `tables` and `custom_rows` arguments—to the `create_a11ytable()` function. +Now we can construct an aftable by passing the required sheet elements as character vectors with `c()`—or a `list()` in the case of the `tables` and `custom_rows` arguments—to the `create_aftable()` function. Note that: @@ -154,12 +154,12 @@ Note that: * you must use `NA_character_` wherever an element isn't required (e.g. there is no information about blank cells nor sources for the first three sheets) * you can insert a template of this demo using the package's RStudio Addin -```{r new-a11ytable} -my_a11ytable <- a11ytables::create_a11ytable( +```{r new-aftable} +my_aftable <- aftables::create_aftable( tab_titles = c("Cover", "Contents", "Notes", "Table 1", "Table_2"), sheet_types = c("cover", "contents", "notes", "tables", "tables"), sheet_titles = c( - "The 'a11ytables' Demo Workbook", + "The 'aftables' Demo Workbook", "Table of contents", "Notes", "Table 1: First Example Sheet", @@ -175,14 +175,14 @@ my_a11ytable <- a11ytables::create_a11ytable( NA_character_, "A custom row.", c( - "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/a11ytables/)", + "First custom row [with a hyperlink.](https://best-practice-and-impact.github.io/aftables/)", "Second custom row." ), "A custom row." ), sources = c( rep(NA_character_, 3), - "[The Source Material., 2024](https://best-practice-and-impact.github.io/a11ytables/)", + "[The Source Material., 2024](https://best-practice-and-impact.github.io/aftables/)", "The Source Material, 2024." ), tables = list(cover_list, contents_df, notes_df, table_1_df, table_2_df) @@ -193,24 +193,24 @@ The function will return errors or warnings if anything is missing or seems odd. Here's a preview of the object that was created: -```{r a11ytable-preview} -my_a11ytable +```{r aftable-preview} +my_aftable ``` -You can immediately tell that this is an a11ytable because it's the first word that's printed with the output. +You can immediately tell that this is an aftable because it's the first word that's printed with the output. -So our a11ytable is basically just a table with one row per sheet and one column per sheet element. In fact, it has class 'data.frame'/'tbl' along with 'a11ytable'. For convenience, you can also check for the a11ytable class with `is_a11ytable()`. +So our aftable is basically just a table with one row per sheet and one column per sheet element. In fact, it has class 'data.frame'/'tbl' along with 'aftable'. For convenience, you can also check for the aftable class with `is_aftable()`. -Note that `create_a11ytable()` is the preferred method for generating a11ytable-class objects, but it's also possible to convert a correctly-formatted, pre-built data.frame or tibble directly to an a11ytable with `as_a11ytable()`. +Note that `create_aftable()` is the preferred method for generating aftable-class objects, but it's also possible to convert a correctly-formatted, pre-built data.frame or tibble directly to an aftable with `as_aftable()`. ### 2. Convert to a workbook -We can use `generate_workbook()` to convert our a11ytable to an [{openxlsx}](https://ycphs.github.io/openxlsx/) Workbook-class object. +We can use `generate_workbook()` to convert our aftable to an [{openxlsx}](https://ycphs.github.io/openxlsx/) Workbook-class object. -This type of object adds information from each row of our a11ytable into separate sheets and applies other relevant structure, mark-up and styles for compliance with [the best practice guidance](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/). +This type of object adds information from each row of our aftable into separate sheets and applies other relevant structure, mark-up and styles for compliance with [the best practice guidance](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/). -```{r create-a11y-wb} -my_wb <- a11ytables::generate_workbook(my_a11ytable) +```{r create-af-wb} +my_wb <- aftables::generate_workbook(my_aftable) ```

Click for a preview of the Workbook object @@ -237,18 +237,18 @@ You could also open a temporary copy of the workbook with `openxlsx::openXL()`, The content of your output spreadsheet will end up looking something like this:
-Gif of a simple Excel workbook created using the a11ytables package, revealing tabs for cover, contents, notes and a table. +Gif of a simple Excel workbook created using the aftables package, revealing tabs for cover, contents, notes and a table.
You'll notice that various best-practice formatting (e.g. Arial size 12 font for body text) and mark-up (e.g. tables, donated by a marker in the lower-right corner of the lower-right cell of each one) have been applied throughout. -Note also that two 'pre-table' meta-elements were created automatically in the sheets that contain statistical tables, which you didn't need to supply to `create_a11ytable()`: (1) the number of tables and (2) the presence of notes. These are required for accessibility good practice. +Note also that two 'pre-table' meta-elements were created automatically in the sheets that contain statistical tables, which you didn't need to supply to `create_aftable()`: (1) the number of tables and (2) the presence of notes. These are required for accessibility good practice. #### Final tweaks -It's your responsibility to check and amend the output from {a11ytables} to ensure it meets users' accessibility needs. +It's your responsibility to check and amend the output from {aftables} to ensure it meets users' accessibility needs. -You can apply some final tweaks to the output xlsx file if the defaults don't quite meet your requirements (e.g. some column widths), though it's advisable to keep changes to a minimum for reproducibility purposes and because you may undo some of the compliant structuring and formatting that {a11ytables} provides. +You can apply some final tweaks to the output xlsx file if the defaults don't quite meet your requirements (e.g. some column widths), though it's advisable to keep changes to a minimum for reproducibility purposes and because you may undo some of the compliant structuring and formatting that {aftables} provides. At time of writing (v0.3.0) you might want to address manually some other [accessibility requirements](https://analysisfunction.civilservice.gov.uk/policy-store/releasing-statistics-in-spreadsheets/) that are not yet covered by the package: @@ -256,8 +256,8 @@ At time of writing (v0.3.0) you might want to address manually some other [acces 3. Convert to an ODS file rather than the proprietary xlsx format 4. Various number-formatting issues, like padding decimal places with zeroes -We're trying to address a number of these limitations. Please [see the issues on GitHub](https://github.com/best-practice-and-impact/a11ytables/issues) for the current status. +We're trying to address a number of these limitations. Please [see the issues on GitHub](https://github.com/best-practice-and-impact/aftables/issues) for the current status. ## Contribute -To contribute, please add [an issue](https://github.com/best-practice-and-impact/a11ytables/issues) or [a pull request](https://github.com/best-practice-and-impact/a11ytables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/a11ytables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/a11ytables/blob/main/.github/CONTRIBUTING.md) guidance. +To contribute, please add [an issue](https://github.com/best-practice-and-impact/aftables/issues) or [a pull request](https://github.com/best-practice-and-impact/aftables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/aftables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/aftables/blob/main/.github/CONTRIBUTING.md) guidance. diff --git a/vignettes/checklist.Rmd b/vignettes/checklist.Rmd index f1bc553..05b6309 100644 --- a/vignettes/checklist.Rmd +++ b/vignettes/checklist.Rmd @@ -16,68 +16,68 @@ knitr::opts_chunk$set( ## Purpose -This vignette shows you how {a11ytables} meets accessibility best practice. +This vignette shows you how {aftables} meets accessibility best practice. ## Checklists -This page shows how the features of the {a11ytables} package meet the Analysis Function's ['Making spreadsheets accessible: checklist of the basics'](https://analysisfunction.civilservice.gov.uk/policy-store/making-spreadsheets-accessible-a-brief-checklist-of-the-basics/) guidance. +This page shows how the features of the {aftables} package meet the Analysis Function's ['Making spreadsheets accessible: checklist of the basics'](https://analysisfunction.civilservice.gov.uk/policy-store/making-spreadsheets-accessible-a-brief-checklist-of-the-basics/) guidance. -The assessments in the table below are based on generating an unedited output from a typical {a11ytables} workflow, i.e. use `create_a11ytable()` to make an a11ytable that's passed to `generate_workbook()` and then written with `openxlsx::saveWorkbook()`. +The assessments in the table below are based on generating an unedited output from a typical {aftables} workflow, i.e. use `create_aftable()` to make an aftable that's passed to `generate_workbook()` and then written with `openxlsx::saveWorkbook()`. There are several self-assessed indicators used in the 'status' column of the tables below: -* 'met' means that {a11ytables} contains a feature (or the absence of a feature) to help meet the requirement +* 'met' means that {aftables} contains a feature (or the absence of a feature) to help meet the requirement * 'user's responsibility' means that the user must make a decision about how to meet the requirement -* 'partly' means that {a11ytables} contains a feature to help meet the requirement, but the user may need to provide additional input -* 'not applicable' means the checklist item does not need to be met due to the way in which {a11ytables} works +* 'partly' means that {aftables} contains a feature to help meet the requirement, but the user may need to provide additional input +* 'not applicable' means the checklist item does not need to be met due to the way in which {aftables} works ### Tables | Description | Essential? | Status | Explanation | | :-- | :- | :- | :---- | | Mark up tables | Yes | Met | Provided automatically by `generate_workbook()` | -| Give tables meaningful names | No | Met | Unique table names are generated from the `tab_titles` argument in `create_a11ytable()` | -| Remove merged cells, split cells and nested tables | Yes | Met | {a11ytables} doesn't create these features | -| Remove blank rows and columns within tables | Yes | Partly/user’s responsibility | A warning is supplied to a user if cells in the table are blank but no explanation has been provided in the `blank_cells` column of the provided a11ytables object | +| Give tables meaningful names | No | Met | Unique table names are generated from the `tab_titles` argument in `create_aftable()` | +| Remove merged cells, split cells and nested tables | Yes | Met | {aftables} doesn't create these features | +| Remove blank rows and columns within tables | Yes | Partly/user’s responsibility | A warning is supplied to a user if cells in the table are blank but no explanation has been provided in the `blank_cells` column of the provided aftables object | | All tables should have one tagged header row | Yes | Met | R's data.frame class only allows for one header row, which must have unique names; the header row is tagged when marked-up as a table | -| Wrap text within cells | Yes | Met | `generate_workbook()` wraps content by default; there's a simple check in {a11ytables} to widen a column if it contains long strings | -| Avoid adding filters and freeze panes | No | Met | Filters and freezing aren't supported by {a11ytables} | -| Only leave cells with no data empty in certain circumstances | Yes | User's responsibility | The user should describe why there are blank cells in the `blank_cells` column of their a11ytables object | -| Avoid hiding rows or columns | No | Met | Hiding isn't supported by {a11ytables} | -| Columns should be a sensible width | No | Partly | {a11ytables} uses a fixed default column width for data tables (16), which is doubled (32) if the length of the content exceeds a threshold number of characters (50) | +| Wrap text within cells | Yes | Met | `generate_workbook()` wraps content by default; there's a simple check in {aftables} to widen a column if it contains long strings | +| Avoid adding filters and freeze panes | No | Met | Filters and freezing aren't supported by {aftables} | +| Only leave cells with no data empty in certain circumstances | Yes | User's responsibility | The user should describe why there are blank cells in the `blank_cells` column of their aftables object | +| Avoid hiding rows or columns | No | Met | Hiding isn't supported by {aftables} | +| Columns should be a sensible width | No | Partly | {aftables} uses a fixed default column width for data tables (16), which is doubled (32) if the length of the content exceeds a threshold number of characters (50) | ### Footnotes | Description | Essential? | Status | Explanation | | :-- | :- | :- | :---- | -| Do not use symbols or superscript to signpost to notes | Yes | Met/user’s responsibility | Notes are detected automatically as digits in square brackets; superscript is not supported by {a11ytables} | +| Do not use symbols or superscript to signpost to notes | Yes | Met/user’s responsibility | Notes are detected automatically as digits in square brackets; superscript is not supported by {aftables} | | Use the word 'note' when referring to footnotes | No | User’s responsibility | Notes are detected in the form '[note 1]'; the user should be consistent about this wording | | Avoid putting note markers in specific cells | No | User’s responsibility | Columns named 'Notes' and note markers in column headers are detected, the user should not put these elsewhere | -| Put note text in a notes table on a notes worksheet | No | Met | `create_a11ytable()` expects the `sheet_type` 'notes' | +| Put note text in a notes table on a notes worksheet | No | Met | `create_aftable()` expects the `sheet_type` 'notes' | ### Formatting | Description | Essential? | Status | Explanation | | :-- | :- | :- | :---- | -| All written content needs to meet the accessibility guidelines | No | User's responsibility | {a11ytables} does not check the validity of user-supplied text | -| Links must be accessible | Yes | User's responsibility | {a11ytables} does not check the validity of user-supplied text | +| All written content needs to meet the accessibility guidelines | No | User's responsibility | {aftables} does not check the validity of user-supplied text | +| Links must be accessible | Yes | User's responsibility | {aftables} does not check the validity of user-supplied text | | Format text to make it accessible | No | Met | `generate_workbook()` auto-formats the text | -| All worksheets should have descriptive titles which are properly tagged and formatted | Yes | Partly/user’s responsibility | {a11ytables} does not check user-supplied text nor data; the package handles formatting but not yet mark-up for headings | -| Avoid using symbols in general | No | User's responsibility | {a11ytables} does not check the validity of user-supplied text | -| Do not use headers and footers, floating text boxes or floating toolbars | Yes | Met | These features aren't supported by {a11ytables} | -| Do not use visual devices to divide data regions | No | Met | Colours and patterns aren't supported by {a11ytables} | -| Do not use a background fill | No | Met | Fills aren't supported by {a11ytables} | -| Do not use colour as the only way to convey a message | Yes | Met | Colour is not supported by {a11ytables} | -| When using colour for emphasis check the contrast | Yes | Not applicable | Colour is not supported by {a11ytables}, so a check is not required | -| Avoid images in spreadsheets | No | Met | Images aren't supported by {a11ytables} | -| Remove macros | No | Met | Macros aren't supported by {a11ytables} | +| All worksheets should have descriptive titles which are properly tagged and formatted | Yes | Partly/user’s responsibility | {aftables} does not check user-supplied text nor data; the package handles formatting but not yet mark-up for headings | +| Avoid using symbols in general | No | User's responsibility | {aftables} does not check the validity of user-supplied text | +| Do not use headers and footers, floating text boxes or floating toolbars | Yes | Met | These features aren't supported by {aftables} | +| Do not use visual devices to divide data regions | No | Met | Colours and patterns aren't supported by {aftables} | +| Do not use a background fill | No | Met | Fills aren't supported by {aftables} | +| Do not use colour as the only way to convey a message | Yes | Met | Colour is not supported by {aftables} | +| When using colour for emphasis check the contrast | Yes | Not applicable | Colour is not supported by {aftables}, so a check is not required | +| Avoid images in spreadsheets | No | Met | Images aren't supported by {aftables} | +| Remove macros | No | Met | Macros aren't supported by {aftables} | ### Structure | Description | Essential? | Status | Explanation | | :-- | :- | :- | :---- | -| Give worksheets unique names or numbers | Yes | User's responsibility | Supply `tab_titles` to `create_a11ytable()`, which gives a warning if any names match | -| Remove blank worksheets | Yes | Met | `create_a11ytable()` will error if expected argument content is missing | +| Give worksheets unique names or numbers | Yes | User's responsibility | Supply `tab_titles` to `create_aftable()`, which gives a warning if any names match | +| Remove blank worksheets | Yes | Met | `create_aftable()` will error if expected argument content is missing | | Use cells in column A wisely | Yes | Met | `generate_workbook()` inserts the sheet title, table count, notes statement, source statement and tables into column A by default | | Position tables against the left-hand edges of each sheet | Yes | Met | `generate_workbook()` inserts automatically the tables into column A | | Avoid putting content below a table | No | Met | `generate_workbook()` adds information to rows above tables only | @@ -87,11 +87,11 @@ There are several self-assessed indicators used in the 'status' column of the ta | Description | Essential? | Status | Explanation | | :-- | :- | :- | :---- | -| Run a spelling and grammar check | Yes | User's responsibility | These checks aren't supported by {a11ytables}; the user should check using their own software | -| Use the accessibility checker | No | User's responsibility | These checks aren't supported by {a11ytables}; the user should check using their own software | -| Add document information | Yes | User's responsibility | Not yet possible with {a11ytables}; users must do this manually | +| Run a spelling and grammar check | Yes | User's responsibility | These checks aren't supported by {aftables}; the user should check using their own software | +| Use the accessibility checker | No | User's responsibility | These checks aren't supported by {aftables}; the user should check using their own software | +| Add document information | Yes | User's responsibility | Not yet possible with {aftables}; users must do this manually | | Ensure the cursor is in cell A1 of the first worksheet when doing your final save | Yes | Met | Occurs automatically | # Contribute -To contribute, please add [an issue](https://github.com/best-practice-and-impact/a11ytables/issues) or [a pull request](https://github.com/best-practice-and-impact/a11ytables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/a11ytables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/a11ytables/blob/main/.github/CONTRIBUTING.md) guidance. +To contribute, please add [an issue](https://github.com/best-practice-and-impact/aftables/issues) or [a pull request](https://github.com/best-practice-and-impact/aftables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/aftables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/aftables/blob/main/.github/CONTRIBUTING.md) guidance. diff --git a/vignettes/structure.Rmd b/vignettes/structure.Rmd index 9ce6241..315839a 100644 --- a/vignettes/structure.Rmd +++ b/vignettes/structure.Rmd @@ -20,95 +20,95 @@ This vignette is aimed at developers who want to understand the package better a # Overview -There are only two main user-facing functions in {a11ytables}: +There are only two main user-facing functions in {aftables}: -* `create_a11ytable()` to create a data.frame object (with an additional 'a11ytable' S3 class) filled with all the information needed to create a spreadsheet output, as well as check the validity of the structure and provide errors or warnings -* `generate_workbook()` to convert the output from `create_a11ytable()` to an [{openxlsx}](https://ycphs.github.io/openxlsx/) Workbook-class object, ready for writing to an xlsx file with `openxlsx::saveWorkbook()` +* `create_aftable()` to create a data.frame object (with an additional 'aftable' S3 class) filled with all the information needed to create a spreadsheet output, as well as check the validity of the structure and provide errors or warnings +* `generate_workbook()` to convert the output from `create_aftable()` to an [{openxlsx}](https://ycphs.github.io/openxlsx/) Workbook-class object, ready for writing to an xlsx file with `openxlsx::saveWorkbook()` This simplicity is a feature, not a bug. It's designed to greatly simplify the process of creating compliant spreadsheets. The package does the hard work of making the outputs compliant so the user spends less time dealing with it. This vignette provides a quick look at what's happening 'under the hood' in these functions. -Please add [an issue](https://github.com/best-practice-and-impact/a11ytables/issues) to the package's GitHub repository if you would like any of this explanation to be expanded, or provide a solution in [a pull request](https://github.com/best-practice-and-impact/a11ytables/pulls). +Please add [an issue](https://github.com/best-practice-and-impact/aftables/issues) to the package's GitHub repository if you would like any of this explanation to be expanded, or provide a solution in [a pull request](https://github.com/best-practice-and-impact/aftables/pulls). # Files First it's worth explaining how the source files are laid out. There are four major groups of scripts in the `R/` directory of the package: -1. Code to make a11ytable-class objects: `a11ytable.R` and `utils-a11ytable.R` contain code for handling the a11ytable class, most importantly the `create_a11ytable()` function, but also coercion with `as_a11ytable()`, checking with `is_a11ytable()`, a `summary()` method and a `print()` method, which takes advantage of [the {pillar} package](https://github.com/r-lib/pillar) for prettier outputs. +1. Code to make aftable-class objects: `aftable.R` and `utils-aftable.R` contain code for handling the aftable class, most importantly the `create_aftable()` function, but also coercion with `as_aftable()`, checking with `is_aftable()`, a `summary()` method and a `print()` method, which takes advantage of [the {pillar} package](https://github.com/r-lib/pillar) for prettier outputs. 2. Code to make Workbook-class objects: `workbook.R`, `utils-workbook.R` and `utils-workbook-style.R` contain the code for creating and styling a Workbook-class object with the `generate_workbook()` function. 3. Code to produce demo datasets: `data.R` contains the documentation for demo datasets, which are created in the `data-raw/` directory with the files stored in the `data/` directory. 4. Code that creates the RStudio Addin: `addin.R` and `utils-addin.R` contain code for the [RStudio Addin](https://rstudio.github.io/rstudioaddins/) (the .dcf file for which is in the `inst/rstudio/` directory). -You'll also find the `a11ytables-package.R` file in the `R/` directory, which provides a package-level help page derived from the DESCRIPTION file when `?a11ytables` is run by the user. It doesn't need to be edited. +You'll also find the `aftables-package.R` file in the `R/` directory, which provides a package-level help page derived from the DESCRIPTION file when `?aftables` is run by the user. It doesn't need to be edited. # Code -This sections below focus on the `create_a11ytable()` and `generate_workbook()` functions, which are the primary and most complex functions in the package. +This sections below focus on the `create_aftable()` and `generate_workbook()` functions, which are the primary and most complex functions in the package. The code that underpins these functions is modularised to aid with bug-catching and testing, but also to make it easier for developers to understand how the code fits together. Internal sub-functions are consistently-named and begin with verbs, which should help you better understand their purpose. -Note that {a11ytables} uses a convention that internal functions (i.e. those not presented to the user, but accessed via the `:::` qualifier) are prefixed with a period (i.e. `.f()`) to make it clearer that they are internal to the package. The exported user-facing functions do not use a leading period. +Note that {aftables} uses a convention that internal functions (i.e. those not presented to the user, but accessed via the `:::` qualifier) are prefixed with a period (i.e. `.f()`) to make it clearer that they are internal to the package. The exported user-facing functions do not use a leading period. -## To create a11ytables +## To create aftables -Actually, `create_a11ytable()` itself only does one thing: it takes user inputs from the arguments and combines them into a dataframe. It then passes this off to the most important function in the package, `as_a11ytable()`, which is responsible for coercing the dataframe to a11ytable class and performing checks on its content. +Actually, `create_aftable()` itself only does one thing: it takes user inputs from the arguments and combines them into a dataframe. It then passes this off to the most important function in the package, `as_aftable()`, which is responsible for coercing the dataframe to aftable class and performing checks on its content. -Basically, `as_a11ytable()` creates an S3-class object with classes 'data.frame' and 'tbl' (i.e. [tibble](https://tibble.tidyverse.org/)) and an additional 'a11ytable' class. +Basically, `as_aftable()` creates an S3-class object with classes 'data.frame' and 'tbl' (i.e. [tibble](https://tibble.tidyverse.org/)) and an additional 'aftable' class. ```{r class-demo} -library(a11ytables) -my_a11ytable <- as_a11ytable(demo_df) -class(my_a11ytable) +library(aftables) +my_aftable <- as_aftable(demo_df) +class(my_aftable) ``` The object can be manipulated like a 'normal' dataframe and---thanks to the {pillar} package and the tbl class---it can be printed in compact form without the need for the whole of the {tibble} package to be imported. ```{r print-demo} -my_a11ytable +my_aftable ``` Compare this to its appearance as a regular data.frame, which is trickier to understand: ```{r df-demo-no-eval} -as.data.frame(my_a11ytable) +as.data.frame(my_aftable) ``` -Within `as_a11ytable()` itself are two major functions that help ensure proper construction of an a11ytable object: +Within `as_aftable()` itself are two major functions that help ensure proper construction of an aftable object: -* `.validate_a11ytable()` will generate errors if basic structural expectations of an a11ytable aren't met (e.g. if 'cover', 'contents' or 'notes' have been provided more than once to the `sheet_type` argument) -* `.warn_a11ytable()` checks for things that the user may have forgotten and prints warnings about them (e.g. if 5 notes are declared in the notes sheet but there are fewer in the tables themselves) +* `.validate_aftable()` will generate errors if basic structural expectations of an aftable aren't met (e.g. if 'cover', 'contents' or 'notes' have been provided more than once to the `sheet_type` argument) +* `.warn_aftable()` checks for things that the user may have forgotten and prints warnings about them (e.g. if 5 notes are declared in the notes sheet but there are fewer in the tables themselves) -Advanced users can create a correctly-formatted data.frame on the fly and convert it to an a11ytable with `as_a11ytable()` directly. The `as_a11ytable()` function mainly exists to make testing easier, i.e. you can pass to it the pre-prepared `demo_df` dataset. +Advanced users can create a correctly-formatted data.frame on the fly and convert it to an aftable with `as_aftable()` directly. The `as_aftable()` function mainly exists to make testing easier, i.e. you can pass to it the pre-prepared `demo_df` dataset. ### Methods -There's a few methods for a11ytables that are also found in `R/a11ytables.R`. +There's a few methods for aftables that are also found in `R/aftables.R`. -`is_a11ytable()` is a classic logical test that checks for the a11ytable class in the object provided to it. +`is_aftable()` is a classic logical test that checks for the aftable class in the object provided to it. ```{r is-demo} -is_a11ytable(my_a11ytable) +is_aftable(my_aftable) ``` -The `summary()` method prints a very simple overview of a provided a11ytable. +The `summary()` method prints a very simple overview of a provided aftable. ```{r summary-demo} -summary(my_a11ytable) +summary(my_aftable) ``` -The `tbl_sum()` method is provided via the {pillar} package, with the goal of providing a bespoke header to the printed a11ytable. +The `tbl_sum()` method is provided via the {pillar} package, with the goal of providing a bespoke header to the printed aftable. ```{r tbl-sum-demo} -pillar::tbl_sum(my_a11ytable) +pillar::tbl_sum(my_aftable) ``` ## To create workbooks -The `generate_workbook()` function sets up an [{openxlsx}](https://ycphs.github.io/openxlsx/) Workbook-class object and fills it by iterating over a user-supplied the a11ytable-class object. +The `generate_workbook()` function sets up an [{openxlsx}](https://ycphs.github.io/openxlsx/) Workbook-class object and fills it by iterating over a user-supplied the aftable-class object. ```{r wb-class} -my_wb <- generate_workbook(my_a11ytable) +my_wb <- generate_workbook(my_aftable) class(my_wb) ``` @@ -122,14 +122,14 @@ Several internal sub-functions within `generate_workbook()`---`.add_*()`, `.inse ### Add sheets -A Workbook-class object is first created with `openxlsx::createWorkbook()` and then sheets are added based on the contents of the user-supplied a11ytable. +A Workbook-class object is first created with `openxlsx::createWorkbook()` and then sheets are added based on the contents of the user-supplied aftable. The following functions add sheets and sheet elements into the workbook: -* `.add_tabs()` adds the required number of tabs into the workbook with `openxlsx::addWorksheet()` (as per the `tab_title` column of the supplied a11ytable) -* `.add_cover()` and `.add_contents()` add the information needed for the cover and contents sheets (as per the required 'cover' and 'contents' supplied in the `sheet_type` column of an a11ytable) -* `.add_notes()` if a notes sheet exists (i.e. a row in the supplied a11ytable with a `sheet_type` of 'notes') -* `.add_table()` adds sheets for each statistical table (as per rows of supplied a11ytable with a `sheet_type` of 'table') +* `.add_tabs()` adds the required number of tabs into the workbook with `openxlsx::addWorksheet()` (as per the `tab_title` column of the supplied aftable) +* `.add_cover()` and `.add_contents()` add the information needed for the cover and contents sheets (as per the required 'cover' and 'contents' supplied in the `sheet_type` column of an aftable) +* `.add_notes()` if a notes sheet exists (i.e. a row in the supplied aftable with a `sheet_type` of 'notes') +* `.add_table()` adds sheets for each statistical table (as per rows of supplied aftable with a `sheet_type` of 'table') As sheets are added, content is inserted and styles are applied with the: @@ -138,20 +138,20 @@ As sheets are added, content is inserted and styles are applied with the: #### Insert sheet elements -There are several `.insert_*()` functions that add information to each sheet depending on the `sheet_type` of the provided a11ytable, as well as the content, if any, of its `sheet_title`, `blank_cells`, `source` and `table` columns. +There are several `.insert_*()` functions that add information to each sheet depending on the `sheet_type` of the provided aftable, as well as the content, if any, of its `sheet_title`, `blank_cells`, `source` and `table` columns. The following functions insert 'pre-table' elements in this order: * `.insert_title()` to place the sheet title in cell A1 * `.insert_table_count()` to add a statement about the number of tables in the sheet -* `.insert_notes_statement()` if a `sheet_type` of 'notes' is provided in the user's a11ytable -* `.insert_blanks_message()` if content is provided in the `blanks_cells` column of the user's a11ytable -* `.insert_custom_rows()` if content is provided in the `custom_rows` column of the user's a11ytable -* `.insert_source()` if content is provided in the `source` column of the user's a11ytable +* `.insert_notes_statement()` if a `sheet_type` of 'notes' is provided in the user's aftable +* `.insert_blanks_message()` if content is provided in the `blanks_cells` column of the user's aftable +* `.insert_custom_rows()` if content is provided in the `custom_rows` column of the user's aftable +* `.insert_source()` if content is provided in the `source` column of the user's aftable -A table of data is added under the metadata with `.insert_table()`, which is provided in the `table` column of the user's a11ytable object. +A table of data is added under the metadata with `.insert_table()`, which is provided in the `table` column of the user's aftable object. -The exact `.insert_*()` functions called depend on the `sheet_type` declared in the a11ytable: +The exact `.insert_*()` functions called depend on the `sheet_type` declared in the aftable: * meta sheets (cover, contents and notes) need only `.insert_title()` and `.insert_table_count()` * statistical tables may also require `.insert_blanks_message()`, `.insert_custom_rows()` and `.insert_source()` if the relevant content is provided by the user, as well as `.insert_notes_statement()` if there are notes @@ -162,7 +162,7 @@ For example, if all the elements are supplied, then the table would begin in row #### Apply styles -There are a few `.style_*()` functions that create styles and apply them on the basis of the `sheet_type` provided in the a11ytable. +There are a few `.style_*()` functions that create styles and apply them on the basis of the `sheet_type` provided in the aftable. * `.style_create()` creates an easily-referenced lookup of styles, which is created with `openxlsx::createStyle()` * `.style_workbook()` applies defaults for _the whole workbook_ (i.e. to set the font style to Arial size 12) @@ -171,4 +171,4 @@ There are a few `.style_*()` functions that create styles and apply them on the # Contribute -To contribute, please add [an issue](https://github.com/best-practice-and-impact/a11ytables/issues) or [a pull request](https://github.com/best-practice-and-impact/a11ytables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/a11ytables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/a11ytables/blob/main/.github/CONTRIBUTING.md) guidance. +To contribute, please add [an issue](https://github.com/best-practice-and-impact/aftables/issues) or [a pull request](https://github.com/best-practice-and-impact/aftables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/aftables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/aftables/blob/main/.github/CONTRIBUTING.md) guidance. diff --git a/vignettes/terminology.Rmd b/vignettes/terminology.Rmd index 72f93b5..9dfe486 100644 --- a/vignettes/terminology.Rmd +++ b/vignettes/terminology.Rmd @@ -16,7 +16,7 @@ knitr::opts_chunk$set( # Purpose -This vignette provides a quick lookup of spreadsheet nomenclature, as used in the {a11ytables} package. +This vignette provides a quick lookup of spreadsheet nomenclature, as used in the {aftables} package. # Terminology @@ -44,10 +44,10 @@ _Sheets_ themselves are composed of inserted _elements_ that appear in the follo # Example -This is an example xlsx output from the {a11ytables} package: +This is an example xlsx output from the {aftables} package:
-A spreadsheet produced by the a11ytables package. Four things have been marked with numbers. 1 points to the current tab, named Table_1. 2 points to the sheet title. 3 points to four rows of elements below the title and below the table, which refer to the number of tables in the sheet, the presence of notes, the meaning of blank cells and the data source. 4 points to the table. +A spreadsheet produced by the aftables package. Four things have been marked with numbers. 1 points to the current tab, named Table_1. 2 points to the sheet title. 3 points to four rows of elements below the title and below the table, which refer to the number of tables in the sheet, the presence of notes, the meaning of blank cells and the data source. 4 points to the table.
The labels in the image above highlight: @@ -59,4 +59,4 @@ The labels in the image above highlight: # Contribute -To contribute, please add [an issue](https://github.com/best-practice-and-impact/a11ytables/issues) or [a pull request](https://github.com/best-practice-and-impact/a11ytables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/a11ytables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/a11ytables/blob/main/.github/CONTRIBUTING.md) guidance. +To contribute, please add [an issue](https://github.com/best-practice-and-impact/aftables/issues) or [a pull request](https://github.com/best-practice-and-impact/aftables/pulls) after reading [the code of conduct](https://github.com/best-practice-and-impact/aftables/blob/main/CODE_OF_CONDUCT.md) and [contributing](https://github.com/best-practice-and-impact/aftables/blob/main/.github/CONTRIBUTING.md) guidance.