@@ -103,15 +103,34 @@ parse_transform_serialize <- function(text, transformers) {
103103 )
104104 return (" " )
105105 }
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+
115134 serialized_transformed_text <-
116135 serialize_parse_data_flattened(flattened_pd , start_line = start_line )
117136
0 commit comments