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