Skip to content

improve format_expression #159

@chlebowa

Description

@chlebowa

I think we should improve format_expression a little.

Consider:

ll1 <- list(quote(i <- iris), quote(m <- mtcars))
ll2 <- list(quote({i <- iris; m <- mtcars}))
char1 <- c("i <- iris", "m <- mtcars")
char2 <- "
  i <- iris
  m <- mtcars
"

Currently

format_expression <- function(code) {
  code <- lang2calls(code)
  paste(code, collapse = "\n")
}

> format_expression(ll1)
[1] "i <- iris\nm <- mtcars" 
> format_expression(ll2)
[1] "i <- iris\nm <- mtcars"
> format_expression(char1)
[1] "c(\"i <- iris\", \"m <- mtcars\")"
> format_expression(char2)
[1] "\n  i <- iris\n  m <- mtcars\n"

unlist separates character vector

> format_expression <- function(code) {
+   code <- lang2calls(code)
+   paste(unlist(code), collapse = "\n")
+ }

> format_expression(ll1)
[1] "i <- iris\nm <- mtcars"
> format_expression(ll2)
[1] "i <- iris\nm <- mtcars"
> format_expression(char1)
[1] "i <- iris\nm <- mtcars"
> format_expression(char2)
[1] "\n  i <- iris\n  m <- mtcars\n"

trimws removes some excess white space

format_expression <- function(code) {
  code <- lang2calls(code)
  trimws(paste(unlist(code), collapse = "\n"))
}

> format_expression(ll1)
[1] "i <- iris\nm <- mtcars"
> format_expression(ll2)
[1] "i <- iris\nm <- mtcars"
> format_expression(char1)
[1] "i <- iris\nm <- mtcars"
> format_expression(char2)
[1] "i <- iris\n  m <- mtcars"

Question is: do we really need it? This is an internal function and I'm not sure if there are constrains on the input. Then again we may want to use it in another place (there's a PR in teal.data that does).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions