@@ -103,15 +103,34 @@ parse_transform_serialize <- function(text, transformers) {
103
103
)
104
104
return (" " )
105
105
}
106
- transformed_pd <- apply_transformers(pd_nested , transformers )
107
- flattened_pd <- post_visit(transformed_pd , list (extract_terminals )) %> %
108
- enrich_terminals(transformers $ use_raw_indention ) %> %
109
- apply_ref_indention() %> %
110
- set_regex_indention(
111
- pattern = transformers $ reindention $ regex_pattern ,
112
- target_indention = transformers $ reindention $ indention ,
113
- comments_only = transformers $ reindention $ comments_only
114
- )
106
+
107
+ width <- getOption(" width" )
108
+
109
+ newline_ids <- integer(0 )
110
+ tf <- transformers
111
+ repeat {
112
+ add_line_break_at_pos_id <- mk_add_line_break_at_pos_id(newline_ids )
113
+ tf $ line_break <- c(lst(add_line_break_at_pos_id ),transformers $ line_break )
114
+ transformed_pd <- apply_transformers(pd_nested , tf )
115
+
116
+ flattened_pd <- post_visit(transformed_pd , list (extract_terminals )) %> %
117
+ enrich_terminals(transformers $ use_raw_indention ) %> %
118
+ apply_ref_indention() %> %
119
+ set_regex_indention(
120
+ pattern = transformers $ reindention $ regex_pattern ,
121
+ target_indention = transformers $ reindention $ indention ,
122
+ comments_only = transformers $ reindention $ comments_only
123
+ )
124
+
125
+ overflowed <- flattened_pd $ pos_id [flattened_pd $ col2 > width ]
126
+
127
+ if (length(overflowed )){
128
+ newline_ids <- unique(c(newline_ids , min(overflowed )))
129
+ }else {
130
+ break
131
+ }
132
+ }
133
+
115
134
serialized_transformed_text <-
116
135
serialize_parse_data_flattened(flattened_pd , start_line = start_line )
117
136
0 commit comments