Skip to content

Commit 8a307d9

Browse files
allow for arbitrary indention characters
1 parent 9eca048 commit 8a307d9

File tree

10 files changed

+51
-13
lines changed

10 files changed

+51
-13
lines changed

.pre-commit-config.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@ default_stages: [commit]
44

55
repos:
66
- repo: https://github.com/lorenzwalthert/precommit
7-
<<<<<<< HEAD
87
rev: v0.2.2.9006
9-
=======
10-
rev: v0.2.1.9002
11-
>>>>>>> 319b36fd (more updates)
128
hooks:
139
- id: style-files
1410
args: [--style_pkg=styler, --style_fun=tidyverse_style]

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
@@ -49,6 +49,8 @@
4949
* added guarantee that styled code is parsable (#892).
5050
* An error is now thrown on styling if input unicode characters can't be
5151
correctly parsed for Windows and R < 4.2 (#883).
52+
* Developers can now create style guides with indention characters other than
53+
spaces (#916).
5254
* styling of text does not error anymore when the R option `OutDec` is set to
5355
a non-default value (#912).
5456
* 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) {
@@ -240,7 +241,8 @@ tidyverse_style <- function(scope = "tokens",
240241
style_guide_name = style_guide_name,
241242
style_guide_version = styler_version,
242243
more_specs_style_guide = args,
243-
transformers_drop = transformers_drop
244+
transformers_drop = transformers_drop,
245+
indent_character = indent_character
244246
)
245247
}
246248

@@ -289,6 +291,7 @@ tidyverse_style <- function(scope = "tokens",
289291
#' introduced to improve speed. Listing transformers here that occur almost
290292
#' always in code does not make sense because the process of excluding them
291293
#' also takes some time.
294+
#' @inheritParams serialize_parse_data_flattened
292295
#' @examples
293296
#' set_line_break_before_curly_opening <- function(pd_flat) {
294297
#' op <- pd_flat$token %in% "'{'"
@@ -318,7 +321,8 @@ create_style_guide <- function(initialize = default_style_guide_attributes,
318321
style_guide_name = NULL,
319322
style_guide_version = NULL,
320323
more_specs_style_guide = NULL,
321-
transformers_drop = specify_transformers_drop()) {
324+
transformers_drop = specify_transformers_drop(),
325+
indent_character = " ") {
322326
list(
323327
# transformer functions
324328
initialize = list(initialize = initialize),
@@ -332,7 +336,8 @@ create_style_guide <- function(initialize = default_style_guide_attributes,
332336
style_guide_name = style_guide_name,
333337
style_guide_version = style_guide_version,
334338
more_specs_style_guide = more_specs_style_guide,
335-
transformers_drop = transformers_drop
339+
transformers_drop = transformers_drop,
340+
indent_character = indent_character
336341
) %>%
337342
map(compact)
338343
}

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.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
test_that("indention character can be arbitrary", {
2+
sg <- function(indent_by = 1) {
3+
create_style_guide(
4+
indention = list(purrr::partial(indent_braces, indent_by = indent_by)),
5+
indent_character = "\t",
6+
style_guide_name = "test",
7+
style_guide_version = 1
8+
)
9+
}
10+
expect_equal(
11+
style_text("{\n1\n}", style = sg) %>%
12+
as.character(),
13+
c("{", "\t1", "}")
14+
)
15+
})

0 commit comments

Comments
 (0)