Skip to content

Commit 2a3fbc6

Browse files
force line break after function declaration. Potentially high speed implications because another visitor call is needed.
1 parent 38a9429 commit 2a3fbc6

8 files changed

+54
-5
lines changed

R/rules-line-break.R

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ style_line_break_around_curly <- function(strict, pd) {
2222
opening_before <- (pd$token == "'{'") & (pd$token_after != "COMMENT")
2323
to_break <- lag(opening_before, default = FALSE) | closing_before
2424
len_to_break <- sum(to_break)
25-
pd$lag_newlines[to_break] <- ifelse(rep(strict, len_to_break),
25+
pd$lag_newlines[to_break] <- ifelse(
26+
# only one case in which ) before {: functino declaration. Rule not
27+
# enforced if for edge case function() # \n {}
28+
rep(strict & !pd$token_before[1] == "')'", len_to_break),
2629
1L,
2730
pmax(1L, pd$lag_newlines[to_break])
2831
)
@@ -52,6 +55,14 @@ remove_line_break_before_round_closing_fun_dec <- function(pd) {
5255
pd
5356
}
5457

58+
set_line_break_after_fun_dec_header <- function(pd) {
59+
if (any(pd$token == "FUNCTION") && pd$child[[nrow(pd)]]$token[1] == "'{'") {
60+
pos <- next_non_comment(pd, 1)
61+
pd$child[[nrow(pd)]]$lag_newlines[pos] <- 2L
62+
}
63+
pd
64+
}
65+
5566

5667
#' @importFrom rlang seq2
5768
add_line_break_after_pipe <- function(pd) {

R/style-guides-mlr.R

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ mlr_style <- function(scope = "tokens",
9898
strict
9999
),
100100
remove_line_break_in_empty_fun_call,
101-
add_line_break_after_pipe
101+
add_line_break_after_pipe,
102+
set_line_break_after_fun_dec_header
102103
)
103104
}
104105

R/transform-files.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,9 @@ parse_transform_serialize_r <- function(text, transformers) {
209209
#' @keywords internal
210210
apply_transformers <- function(pd_nested, transformers) {
211211
transformed_line_breaks <- pre_visit(
212-
pd_nested,
213-
c(transformers$initialize, transformers$line_break)
214-
)
212+
pd_nested, c(transformers$initialize)
213+
) %>%
214+
pre_visit(c(transformers$line_break))
215215

216216
transformed_updated_multi_line <- post_visit(
217217
transformed_line_breaks,
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function() {
2+
x
3+
}
4+
5+
function(x) x
6+

tests/testthat/mlr-style/line-break-after-fun-dec-in_tree

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function() {
2+
3+
x
4+
}
5+
6+
function(x) x
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function() {
2+
x
3+
}

tests/testthat/test-mlr-style.R

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
context("test-mlr-style")
2+
3+
test_that("line break for multi-line function declaration", {
4+
test_collection("mlr-style", "line-break")
5+
})

0 commit comments

Comments
 (0)