Simplify an iterable of segments by combining contiguous segments with the same style. Args: segments (Iterable[Segment]): An iterable of segments. Returns: Iterable[Segment]: A possibly smaller iterable of segments that will render the same way.
(cls, segments: Iterable["Segment"])
| 549 | |
| 550 | @classmethod |
| 551 | def simplify(cls, segments: Iterable["Segment"]) -> Iterable["Segment"]: |
| 552 | """Simplify an iterable of segments by combining contiguous segments with the same style. |
| 553 | |
| 554 | Args: |
| 555 | segments (Iterable[Segment]): An iterable of segments. |
| 556 | |
| 557 | Returns: |
| 558 | Iterable[Segment]: A possibly smaller iterable of segments that will render the same way. |
| 559 | """ |
| 560 | iter_segments = iter(segments) |
| 561 | try: |
| 562 | last_segment = next(iter_segments) |
| 563 | except StopIteration: |
| 564 | return |
| 565 | |
| 566 | _Segment = Segment |
| 567 | for segment in iter_segments: |
| 568 | if last_segment.style == segment.style and not segment.control: |
| 569 | last_segment = _Segment( |
| 570 | last_segment.text + segment.text, last_segment.style |
| 571 | ) |
| 572 | else: |
| 573 | yield last_segment |
| 574 | last_segment = segment |
| 575 | yield last_segment |
| 576 | |
| 577 | @classmethod |
| 578 | def strip_links(cls, segments: Iterable["Segment"]) -> Iterable["Segment"]: |
no outgoing calls