| Conditions | 6 |
| Total Lines | 33 |
| Code Lines | 21 |
| Lines | 33 |
| Ratio | 100 % |
| Changes | 0 | ||
| 1 | View Code Duplication | def get_ReadingOrderGroups(self) -> dict: |
|
|
|
|||
| 2 | """ |
||
| 3 | Aggregate recursive ReadingOrder into a dictionary, mapping each regionRef |
||
| 4 | (i.e. segment `@id`) to its referring group object (i.e one of |
||
| 5 | |||
| 6 | \b |
||
| 7 | - :py:class:`.RegionRefType` |
||
| 8 | - :py:class:`.RegionRefIndexedType` |
||
| 9 | - :py:class:`.OrderedGroupType` |
||
| 10 | - :py:class:`.OrderedGroupIndexedType` |
||
| 11 | - :py:class:`.UnoderedGroupType` |
||
| 12 | - :py:class:`.UnoderedGroupIndexedType` |
||
| 13 | """ |
||
| 14 | def get_groupdict(group): |
||
| 15 | regionrefs = list() |
||
| 16 | if isinstance(group, (OrderedGroupType, OrderedGroupIndexedType)): |
||
| 17 | regionrefs = (group.get_RegionRefIndexed() + |
||
| 18 | group.get_OrderedGroupIndexed() + |
||
| 19 | group.get_UnorderedGroupIndexed()) |
||
| 20 | if isinstance(group, (UnorderedGroupType, UnorderedGroupIndexedType)): |
||
| 21 | regionrefs = (group.get_RegionRef() + |
||
| 22 | group.get_OrderedGroup() + |
||
| 23 | group.get_UnorderedGroup()) |
||
| 24 | refdict = {} |
||
| 25 | for elem in regionrefs: |
||
| 26 | refdict[elem.get_regionRef()] = elem |
||
| 27 | if not isinstance(elem, (RegionRefType, RegionRefIndexedType)): |
||
| 28 | refdict = {**refdict, **get_groupdict(elem)} |
||
| 29 | return refdict |
||
| 30 | ro = self.get_ReadingOrder() |
||
| 31 | if ro is None: |
||
| 32 | return {} |
||
| 33 | return get_groupdict(ro.get_OrderedGroup() or ro.get_UnorderedGroup()) |
||
| 34 |