Skip to content

Commit 004783a

Browse files
Merge pull request #916 from lorenzwalthert/iussue-874
Allow arbitrary indent characters for developers
2 parents c23f533 + e623d4b commit 004783a

11 files changed

+56
-11
lines changed

.pre-commit-config.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ repos:
5757
tests/testthat/escaping/basic-escape-out\.R|
5858
tests/testthat/indention_operators/.*pipe.*|
5959
tests/testthat/line_breaks_and_other/.*pipe.*|
60-
tests/testthat/exception_handling/parser-error.R|
60+
tests/testthat/exception_handling/parser-error\.R|
61+
tests/testthat/public-api/xyzfile_rmd/random4\.Rmd|
62+
tests/testthat/rmd/no-tidy-(in|out)\.Rmd|
6163
)$
6264
- id: no-browser-statement
6365
exclude: >
@@ -68,6 +70,7 @@ repos:
6870
tests/testthat/indention_operators/.*pipe.*|
6971
tests/testthat/line_breaks_and_other/.*pipe.*|
7072
tests/testthat/exception_handling/parser-error.R|
73+
tests/testmanual/|
7174
)$
7275
- id: deps-in-desc
7376
exclude: >

API

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ cache_activate(cache_name = NULL, verbose = !getOption("styler.quiet", FALSE))
66
cache_clear(cache_name = NULL, ask = TRUE)
77
cache_deactivate(verbose = !getOption("styler.quiet", FALSE))
88
cache_info(cache_name = NULL, format = "both")
9-
create_style_guide(initialize = default_style_guide_attributes, line_break = NULL, space = NULL, token = NULL, indention = NULL, use_raw_indention = FALSE, reindention = tidyverse_reindention(), style_guide_name = NULL, style_guide_version = NULL, more_specs_style_guide = NULL, transformers_drop = specify_transformers_drop())
9+
create_style_guide(initialize = default_style_guide_attributes, line_break = NULL, space = NULL, token = NULL, indention = NULL, use_raw_indention = FALSE, reindention = tidyverse_reindention(), style_guide_name = NULL, style_guide_version = NULL, more_specs_style_guide = NULL, transformers_drop = specify_transformers_drop(), indent_character = " ")
1010
default_style_guide_attributes(pd_flat)
1111
specify_math_token_spacing(zero = "'^'", one = c("'+'", "'-'", "'*'", "'/'"))
1212
specify_reindention(regex_pattern = NULL, indention = 0, comments_only = TRUE)

NEWS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
statement by {styler} (#915).
5252
* An error is now thrown on styling if input unicode characters can't be
5353
correctly parsed for Windows and R < 4.2 (#883).
54+
* Developers can now create style guides with indention characters other than
55+
spaces (#916).
5456
* styling of text does not error anymore when the R option `OutDec` is set to
5557
a non-default value (#912).
5658
* Fix argument name `filetype` in Example for `style_dir()` (#855).

R/serialize.R

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,23 @@
22
#'
33
#' Collapses a flattened parse table into character vector representation.
44
#' @inheritParams apply_stylerignore
5+
#' @param indent_character The character that is used for indention. We strongly
6+
#' advise for using spaces as indention characters.
57
#' @keywords internal
6-
serialize_parse_data_flattened <- function(flattened_pd) {
8+
serialize_parse_data_flattened <- function(flattened_pd, indent_character = "") {
79
flattened_pd <- apply_stylerignore(flattened_pd)
810
flattened_pd$lag_newlines[1] <- 0L # resolve start_line elsewhere
911
with(
1012
flattened_pd,
1113
paste0(
1214
collapse = "",
13-
map(lag_newlines, add_newlines), map(lag_spaces, add_spaces), text
15+
map(lag_newlines, add_newlines),
16+
map2(
17+
ifelse(lag_newlines > 0, indent_character, " "),
18+
lag_spaces,
19+
rep_char
20+
),
21+
text
1422
)
1523
)
1624
}

R/style-guides.R

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ tidyverse_style <- function(scope = "tokens",
7171
math_token_spacing = tidyverse_math_token_spacing()) {
7272
args <- as.list(environment())
7373
scope <- scope_normalize(scope)
74+
indent_character <- " "
7475

7576

7677
indention_manipulators <- if ("indention" %in% scope) {
@@ -245,7 +246,8 @@ tidyverse_style <- function(scope = "tokens",
245246
style_guide_name = style_guide_name,
246247
style_guide_version = styler_version,
247248
more_specs_style_guide = args,
248-
transformers_drop = transformers_drop
249+
transformers_drop = transformers_drop,
250+
indent_character = indent_character
249251
)
250252
}
251253

@@ -294,6 +296,7 @@ tidyverse_style <- function(scope = "tokens",
294296
#' introduced to improve speed. Listing transformers here that occur almost
295297
#' always in code does not make sense because the process of excluding them
296298
#' also takes some time.
299+
#' @inheritParams serialize_parse_data_flattened
297300
#' @examples
298301
#' set_line_break_before_curly_opening <- function(pd_flat) {
299302
#' op <- pd_flat$token %in% "'{'"
@@ -323,7 +326,8 @@ create_style_guide <- function(initialize = default_style_guide_attributes,
323326
style_guide_name = NULL,
324327
style_guide_version = NULL,
325328
more_specs_style_guide = NULL,
326-
transformers_drop = specify_transformers_drop()) {
329+
transformers_drop = specify_transformers_drop(),
330+
indent_character = " ") {
327331
list(
328332
# transformer functions
329333
initialize = list(initialize = initialize),
@@ -337,7 +341,8 @@ create_style_guide <- function(initialize = default_style_guide_attributes,
337341
style_guide_name = style_guide_name,
338342
style_guide_version = style_guide_version,
339343
more_specs_style_guide = more_specs_style_guide,
340-
transformers_drop = transformers_drop
344+
transformers_drop = transformers_drop,
345+
indent_character = indent_character
341346
) %>%
342347
map(compact)
343348
}

R/testing.R

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ style_empty <- function(text, base_indention = 0) {
171171
# transformer options
172172
use_raw_indention = FALSE,
173173
reindention = specify_reindention(),
174+
indent_character = " ",
174175
NULL
175176
)
176177
transformed_text <- parse_transform_serialize_r(text,
@@ -192,6 +193,7 @@ style_op <- function(text, base_indention = 0) {
192193
# transformer options
193194
use_raw_indention = FALSE,
194195
reindention = specify_reindention(),
196+
indent_character = " ",
195197
NULL
196198
)
197199

R/transform-block.R

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ parse_transform_serialize_r_block <- function(pd_nested,
3737
is_on_newline <- flattened_pd$lag_newlines > 0
3838
is_on_newline[1] <- TRUE
3939
flattened_pd$lag_spaces[is_on_newline] <- flattened_pd$lag_spaces[is_on_newline] + base_indention
40-
serialized_transformed_text <- serialize_parse_data_flattened(flattened_pd)
40+
serialized_transformed_text <- serialize_parse_data_flattened(
41+
flattened_pd,
42+
indent_character = transformers$indent_character
43+
)
4144
} else {
4245
serialized_transformed_text <- map2(
4346
c(0, find_blank_lines_to_next_expr(pd_nested)[-1] - 1L),

man/create_style_guide.Rd

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

man/serialize_parse_data_flattened.Rd

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

tests/testthat/test-cache-high-level-api.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ test_that("speedup higher when cached roxygen example code is multiple expressio
116116
)
117117
# the speed gain for longer expression is 1.1x higher
118118
expect_true(
119-
speedup_multiple_roygen_example / speedup_many_roygen_examples > 1.05
119+
speedup_multiple_roygen_example / speedup_many_roygen_examples > 1.03
120120
)
121121
})
122122

0 commit comments

Comments
 (0)