##// END OF EJS Templates
Try and use groups instead
Eric Wieser -
Show More
@@ -196,11 +196,7 b' class PrettyPrinter(_PrettyPrinterBase):'
196 196 self.group_queue = GroupQueue(root_group)
197 197 self.indentation = 0
198 198
199 def _break_outer_groups(self):
200 while self.max_width < self.output_width + self.buffer_width:
201 group = self.group_queue.deq()
202 if not group:
203 return
199 def _break_one_group(self, group):
204 200 while group.breakables:
205 201 x = self.buffer.popleft()
206 202 self.output_width = x.output(self.output, self.output_width)
@@ -210,6 +206,13 b' class PrettyPrinter(_PrettyPrinterBase):'
210 206 self.output_width = x.output(self.output, self.output_width)
211 207 self.buffer_width -= x.width
212 208
209 def _break_outer_groups(self, force=):
210 while self.max_width < self.output_width + self.buffer_width:
211 group = self.group_queue.deq()
212 if not group:
213 return
214 self._break_one_group(group)
215
213 216 def text(self, obj):
214 217 """Add literal text to the output."""
215 218 width = len(obj)
@@ -248,6 +251,9 b' class PrettyPrinter(_PrettyPrinterBase):'
248 251 """
249 252 Explicitly insert a newline into the output, maintaining correct indentation.
250 253 """
254 group = self.group_queue.deq()
255 if group:
256 self._break_one_group(group)
251 257 self.flush()
252 258 self.output.write(self.newline)
253 259 self.output.write(' ' * self.indentation)
@@ -688,9 +694,7 b' def _repr_pprint(obj, p, cycle):'
688 694 # Find newlines and replace them with p.break_()
689 695 output = repr(obj)
690 696 lines = output.splitlines()
691 # insert a leading newline for multi-line objects that are indented
692 if len(lines) > 1 and p.indentation != p.output_width:
693 p.break_()
697 with p.group():
694 698 for idx, output_line in enumerate(lines):
695 699 if idx:
696 700 p.break_()
General Comments 0
You need to be logged in to leave comments. Login now