diff --git a/NAMESPACE b/NAMESPACE index 3b20ce190..98768c31c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -52,3 +52,4 @@ importFrom(rlang,is_installed) importFrom(rlang,seq2) importFrom(rlang,set_names) importFrom(rlang,warn) +importFrom(vctrs,vec_rbind) diff --git a/R/rules-tokens.R b/R/rules-tokens.R index 91ea86792..7b44cc2c0 100644 --- a/R/rules-tokens.R +++ b/R/rules-tokens.R @@ -204,7 +204,7 @@ fix_quotes <- function(pd_flat) { return(pd_flat) } - pd_flat$text[str_const] <- map(pd_flat$text[str_const], fix_quotes_one) + pd_flat$text[str_const] <- map_chr(pd_flat$text[str_const], fix_quotes_one) pd_flat } diff --git a/R/styler-package.R b/R/styler-package.R index cca57954e..a308da948 100644 --- a/R/styler-package.R +++ b/R/styler-package.R @@ -18,14 +18,14 @@ #' style_text("a%>%b; a", scope = "tokens") "_PACKAGE" -## styler namespace: start +## usethis namespace: start #' -#' @importFrom rlang abort warn seq2 is_installed "%||%" set_names -#' @importFrom purrr map map_lgl map_int map_chr map2 map2_chr map_at pmap pwalk -#' @importFrom purrr compact partial flatten flatten_int flatten_chr #' @importFrom magrittr "%>%" -#' -## styler namespace: end +#' @importFrom purrr compact partial flatten flatten_int flatten_chr +#' @importFrom purrr map map_lgl map_int map_chr map2 map2_chr map_at pmap pwalk +#' @importFrom rlang abort warn seq2 is_installed "%||%" set_names +#' @importFrom vctrs vec_rbind +## usethis namespace: end NULL diff --git a/R/transform-block.R b/R/transform-block.R index fda7abd8e..ba6ccd5f5 100644 --- a/R/transform-block.R +++ b/R/transform-block.R @@ -28,7 +28,9 @@ parse_transform_serialize_r_block <- function(pd_nested, base_indention) { if (!all(pd_nested$is_cached, na.rm = TRUE) || !cache_is_activated()) { transformed_pd <- apply_transformers(pd_nested, transformers) - flattened_pd <- post_visit_one(transformed_pd, extract_terminals) %>% + flattened_pd <- + # Special transformer: returns a list of pd + vec_rbind(!!!post_visit_one(transformed_pd, extract_terminals)) %>% enrich_terminals(transformers$use_raw_indention) %>% apply_ref_indention() %>% set_regex_indention( diff --git a/R/visit.R b/R/visit.R index 7e6600ea3..d59fc71c3 100644 --- a/R/visit.R +++ b/R/visit.R @@ -188,12 +188,19 @@ context_towards_terminals <- function(pd_nested, #' @param pd_nested A nested parse table. #' @keywords internal extract_terminals <- function(pd_nested) { - bind_rows( - ifelse(pd_nested$terminal | pd_nested$is_cached, - split(pd_nested, seq_len(nrow(pd_nested))), - pd_nested$child - ) - ) + terminal <- pd_nested$terminal + is_cached <- pd_nested$is_cached + + child <- pd_nested$child + + for (i in seq_len(nrow(pd_nested))) { + if (terminal[[i]] || is_cached[[i]]) { + child[[i]] <- list(pd_nested[i, ]) + } + } + + # child is a list of data frame lists here + unlist(unname(child), recursive = FALSE) } #' Enrich flattened parse table