Skip to content

Commit 4c1f95a

Browse files
resolve with simple for loop
1 parent 48f53a3 commit 4c1f95a

6 files changed

+30
-57
lines changed

NAMESPACE

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ importFrom(purrr,map_lgl)
3535
importFrom(purrr,partial)
3636
importFrom(purrr,pmap)
3737
importFrom(purrr,pwalk)
38-
importFrom(purrr,walk)
3938
importFrom(purrr,when)
4039
importFrom(rlang,abort)
4140
importFrom(rlang,is_empty)

R/style-guides.R

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ tidyverse_style <- function(scope = "tokens",
278278
#' they will yield generic code and we loose the specific value of `arg` (see
279279
#' [styler::cache_make_key()]), even when unquoting these inputs with `!!`
280280
#' beforehand in `purrr::partial()`.
281+
#' @param subset_transformers A list specifying under which conditions
282+
#' transformer functions can be dropped since they have no effect on the
283+
#' code to format. This is argument experimental and may change in future
284+
#' releases without prior notification.
281285
#' @examples
282286
#' set_line_break_before_curly_opening <- function(pd_flat) {
283287
#' op <- pd_flat$token %in% "'{'"

R/transform-files.R

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -250,34 +250,17 @@ parse_transform_serialize_r <- function(text,
250250
text_out
251251
}
252252

253-
#' Removes the transformers if tokens in x
254-
#' @param transformers The style full style guide, i.e. the result of
255-
#' [create_style_guide()].
256-
#' @param token Named character vector: Names are rules and values are the token
257-
#' that trigger are required to be absent to trigger a removal.
258-
#' @param scope The low-level scope, e.g. 'token'.
259-
#' @param code tokenized code for which we check if `token` is in them.
260-
#' @importFrom purrr walk
261-
transformers_subset_impl <- function(transformers, token, scope, code) {
262-
transformer_names <- names(token)
263-
walk(seq_along(token), function(i) {
264-
if (!any(token[[i]] %in% code)) {
265-
transformers[[scope]][[transformer_names[i]]] <- NULL
266-
}
267-
})
268-
transformers
269-
}
270253

271254
#' Remove transformers that are not needed
272255
#'
273-
#' For every transformer, at least one token must be given to make subsetting.
274-
#' active.
256+
#' The goal is to speed up styling by removing all rules that are only
257+
#' applicable in contexts that don't occur often, e.g. for most code, we don't
258+
#' expect ";" to be in it, so we don't need to apply [resolve_semicolon()] on
259+
#' every *nest*.
275260
#' @param text Text to parse. Can also be the column `text` of the output of
276261
#' [compute_parse_data_nested()], where each element is a token (instead of a
277262
#' line).
278-
#' @return
279-
#' Returns `transformers`, but stripped away those rules that are not used when
280-
#' styling `text`.
263+
#' @param transformers the transformers.
281264
#' @keywords internal
282265
transformers_subset <- function(text, transformers) {
283266
is_colon <- text == ";"
@@ -286,12 +269,16 @@ transformers_subset <- function(text, transformers) {
286269
# here since text is output of compute_parse_data_nested.
287270
text <- c(text[!is_colon], "1;")
288271
}
289-
purrr::reduce2(
290-
transformers$subset_transformers,
291-
names(transformers$subset_transformers),
292-
transformers_subset_impl, unique(tokenize(text)$token),
293-
.init = transformers
294-
)
272+
token <- unique(tokenize(text)$token)
273+
for (scope in c("line_break", "space", "token", "indention")) {
274+
rules <- transformers$subset_transformers[[scope]]
275+
for (rule in names(rules)) {
276+
if (!any(rules[[rule]] %in% token)) {
277+
transformers[[scope]][rule] <- NULL
278+
}
279+
}
280+
}
281+
transformers
295282
}
296283

297284
#' Apply transformers to a parse table

man/create_style_guide.Rd

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/transformers_subset.Rd

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/transformers_subset_impl.Rd

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)