## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----error = TRUE------------------------------------------------------------- try({ x <- call('+', c(1, 2)) base::deparse(x) rlang::expr_deparse(x) constructive::deparse_call(x) # this is different y <- quote(+c(1, 2)) x[[2]] y[[2]] }) ## ----------------------------------------------------------------------------- x <- quote(`*`(a + b, c)) base::deparse(x) rlang::expr_deparse(x) constructive::deparse_call(x) y <- quote((a + b) * c) base::deparse(y) rlang::expr_deparse(y) constructive::deparse_call(y) # x and y are different, parentheses are code! x[[2]] y[[2]] ## ----------------------------------------------------------------------------- x <- call("[") base::deparse(x) rlang::expr_deparse(x) constructive::deparse_call(x) ## ----setup, echo= FALSE------------------------------------------------------- library(constructive) #deparse_call <- function(x) gsub("`", "\\\\`", constructive::deparse_call(x)) deparse_call <- function(x) paste(sprintf("`` %s ``", constructive::deparse_call(x)), collapse = "
") deparse <- function(x) paste(sprintf("`` %s ``", base::deparse(x)), collapse = "
") expr_deparse <- function(x) paste(sprintf("`` %s ``", rlang::expr_deparse(x)), collapse = "
") # deparse <- function(x) as_constructive_code(base::deparse(x)) # expr_deparse <- function(x) as_constructive_code(rlang::expr_deparse(x)) compare_deparse_call <- function(x) identical(unclass(constructive::deparse_call(x)), base::deparse(x)) && identical(base::deparse(x), rlang::expr_deparse(x)) ## ----error = TRUE------------------------------------------------------------- try({ x <- call("(", -1) base::deparse(x) rlang::expr_deparse(x) constructive::deparse_call(x) # this is different! `-` is code! y <- quote((-1)) base::deparse(y) rlang::expr_deparse(y) constructive::deparse_call(y) x <- call("fun", quote(expr = )) base::deparse(x) rlang::expr_deparse(x) constructive::deparse_call(x) # this is wrong! # no agument and 1 missing argument is not the same! y <- call("fun") base::deparse(y) rlang::expr_deparse(y) constructive::deparse_call(y) x <- call("!", quote(expr = )) base::deparse(x) rlang::expr_deparse(x) constructive::deparse_call(x) })