1212class ReindentFilter :
1313 def __init__ (self , width = 2 , char = ' ' , wrap_after = 0 , n = '\n ' ,
1414 comma_first = False , indent_after_first = False ,
15- indent_columns = False ):
15+ indent_columns = False , compact = False ):
1616 self .n = n
1717 self .width = width
1818 self .char = char
@@ -21,6 +21,7 @@ def __init__(self, width=2, char=' ', wrap_after=0, n='\n',
2121 self .wrap_after = wrap_after
2222 self .comma_first = comma_first
2323 self .indent_columns = indent_columns
24+ self .compact = compact
2425 self ._curr_stmt = None
2526 self ._last_stmt = None
2627 self ._last_func = None
@@ -196,15 +197,20 @@ def _process_case(self, tlist):
196197 with offset (self , self ._get_offset (tlist [0 ])):
197198 with offset (self , self ._get_offset (first )):
198199 for cond , value in iterable :
199- token = value [0 ] if cond is None else cond [0 ]
200- tlist .insert_before (token , self .nl ())
200+ str_cond = '' .join (str (x ) for x in cond or [])
201+ str_value = '' .join (str (x ) for x in value )
202+ end_pos = self .offset + 1 + len (str_cond ) + len (str_value )
203+ if (not self .compact
204+ and end_pos > self .wrap_after ):
205+ token = value [0 ] if cond is None else cond [0 ]
206+ tlist .insert_before (token , self .nl ())
201207
202208 # Line breaks on group level are done. let's add an offset of
203209 # len "when ", "then ", "else "
204210 with offset (self , len ("WHEN " )):
205211 self ._process_default (tlist )
206212 end_idx , end = tlist .token_next_by (m = sql .Case .M_CLOSE )
207- if end_idx is not None :
213+ if end_idx is not None and not self . compact :
208214 tlist .insert_before (end_idx , self .nl ())
209215
210216 def _process_values (self , tlist ):
0 commit comments