R/suggest_dataset_name.R

Defines functions suggest_dataset_name

#' Throw an error with suggested dataset name, if possible.
#'
#'
#' @param dataset_name a string to be matched against valid dataset names
#' @keywords internal
#' @noRd
suggest_dataset_name <- function(dataset_name, call = rlang::caller_env()) {
  content <- phs_GET("package_list", "")

  dataset_names <- unlist(content$result)

  # calculate string distances
  string_distances <- stringdist::stringdist(dataset_name, dataset_names)

  # if min distance is too big, abort
  if (min(string_distances) > 10) {
    cli::cli_abort(
      c(
        "Can't find the dataset name
      {.var {dataset_name}}, or a close match.",
        i = "Find a dataset's name in the URL
      of its page on {.url www.opendata.nhs.scot.}"
      ),
      call = call
    )
  }

  # find closet match
  closest_match <- dataset_names[which(string_distances == min(string_distances))]

  # throw error with suggestion
  cli::cli_abort(
    c(
      "Can't find the dataset name {.var {dataset_name}}.",
      "i" = "Did you mean {?any of }{.val {closest_match}}?"
    ),
    call = call
  )
}
Public-Health-Scotland/phsopendata documentation built on April 14, 2025, 11:45 a.m.