pluralise_msg <- function(message, objects) {
paste0(
pluralise(message, objects),
format_n(objects)
)
}
pluralise_commas <- function(message, objects, ...) {
paste0(
pluralise_n(message, length(objects)),
commas(objects),
pluralise_n(paste0(...), length(objects))
)
}
pluralise_count <- function(message, count, ...) {
paste0(
pluralise_n(message, count),
count,
pluralise_n(paste0(...), count)
)
}
pluralise <- function(message, objects) {
pluralise_n(message, length(objects))
}
pluralise_n <- function(message, n) {
stopifnot(n >= 0)
# Don't strip parens if they have a space in between
# (but not if the space comes before the closing paren)
if (n == 1) {
# strip [
message <- gsub("\\[([^\\] ]* *)\\]", "\\1", message, perl = TRUE)
# remove ( and its content
message <- gsub("\\([^\\) ]* *\\)", "", message, perl = TRUE)
} else {
# strip (
message <- gsub("\\(([^\\) ]* *)\\)", "\\1", message, perl = TRUE)
# remove [ and its content
message <- gsub("\\[[^\\] ]* *\\]", "", message, perl = TRUE)
}
message
}
bullets <- function(header, ..., .problem = " problem(s)") {
problems <- c(...)
MAX_BULLETS <- 6L
if (length(problems) >= MAX_BULLETS) {
n_more <- length(problems) - MAX_BULLETS + 1L
problems[[MAX_BULLETS]] <-
pluralise_n(paste0(pre_dots("and "), n_more, " more", .problem), n_more)
length(problems) <- MAX_BULLETS
}
paste0(
header, "\n",
paste0("* ", problems, collapse = "\n")
)
}
commas <- function(problems) {
MAX_BULLETS <- 6L
if (length(problems) >= MAX_BULLETS) {
n_more <- length(problems) - MAX_BULLETS + 1L
problems[[MAX_BULLETS]] <-
pluralise_n(paste0(pre_dots("(and "), n_more, " more)"), n_more)
length(problems) <- MAX_BULLETS
}
paste0(problems, collapse = ", ")
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.