Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request]: Remove unused functions #196

Open
3 tasks done
averissimo opened this issue Feb 14, 2024 · 0 comments
Open
3 tasks done

[Feature Request]: Remove unused functions #196

averissimo opened this issue Feb 14, 2024 · 0 comments

Comments

@averissimo
Copy link
Contributor

Feature description

List of unused functions in {teal.transform}:

note: functions being referenced on this list don't necessarily mean that they "should" be removed. They should be assessed case-by-case.

  • call_condition_logical
  • call_condition_range_date
  • call_condition_range_posixct
  • call_extract_array
  • get_initial_filter_values
  • check_data_extract_spec_react
  • extract_choices_labels

Functions only used in @examples

  • call_extract_list
  • call_condition_range
  • call_with_colon

Methods

Functions were detected with script below that uses grep and enhanced with {crayon} for better readability.

🔎 R script
# Get all the functions in the namespace
all_ns <- ls(getNamespace("teal.transform"))

# Get only exported functions
all_exported <- getNamespaceExports("teal.transform")

# Determine S3Methods to exclude
s3_methods <- all_ns |> vapply(isS3method, logical(1)) |> which() |> names()

# Filter out all exported functions and S3 methods
non_exported <- setdiff(setdiff(all_ns, s3_methods), all_exported)

# Use native `grep` to find occurences in source folder
output_path <- withr::local_file("non_exported.txt")

output_con <- file(output_path, open = "wt")

non_exported |> 
  sort() |> 
  purrr::walk(
    function(x) {
      writeLines("----------------------------------", output_con)
      writeLines("", output_con)
      writeLines("", output_con)
      writeLines(glue::glue("    {x}    "), output_con)
      writeLines("", output_con)
      writeLines("", output_con)
      
      result <- system2(
        "grep",
        c(
          "-n",
          glue::glue("\"{x}\""),
          "-R R/ tests/ vignettes/ data-raw/ inst/"
        ),
        stdout = TRUE
      ) |> 
        stringr::str_replace_all(
          glue::glue(":(.+?){x}(.+)"), 
          glue::glue(":\\1", crayon::red(x), "\\2")
        ) |> 
        stringr::str_replace_all(
          "^(.+?):([0-9]+):", 
          glue::glue(crayon::green("\\1"), ":", crayon::magenta("\\2"), ":")
        ) 
      
      writeLines(result, output_con)
      flush(output_con)
    }
  )
close(output_con)
readLines(output_path) |> cat(sep = "\n")

Code of Conduct

  • I agree to follow this project's Code of Conduct.

Contribution Guidelines

  • I agree to follow this project's Contribution Guidelines.

Security Policy

  • I agree to follow this project's Security Policy.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant