Container for TocElements.
| 53 | |
| 54 | |
| 55 | class Toc: |
| 56 | """Container for TocElements.""" |
| 57 | |
| 58 | def __init__(self): |
| 59 | self.toc = {} |
| 60 | |
| 61 | def clear(self): |
| 62 | """Clear the TOC""" |
| 63 | self.toc = {} |
| 64 | |
| 65 | def add_element(self, element): |
| 66 | """Add a new TocElement to the TOC container.""" |
| 67 | try: |
| 68 | self.toc[element.group][element.name] = element |
| 69 | except KeyError: |
| 70 | self.toc[element.group] = {} |
| 71 | self.toc[element.group][element.name] = element |
| 72 | |
| 73 | def get_element_by_complete_name(self, complete_name): |
| 74 | """Get a TocElement element identified by complete name from the |
| 75 | container.""" |
| 76 | try: |
| 77 | return self.get_element_by_id(self.get_element_id(complete_name)) |
| 78 | except ValueError: |
| 79 | # Item not found |
| 80 | return None |
| 81 | |
| 82 | def get_element_id(self, complete_name): |
| 83 | """Get the TocElement element id-number of the element with the |
| 84 | supplied name.""" |
| 85 | [group, name] = complete_name.split('.') |
| 86 | element = self.get_element(group, name) |
| 87 | if element: |
| 88 | return element.ident |
| 89 | else: |
| 90 | logger.warning('Unable to find variable [%s]', complete_name) |
| 91 | return None |
| 92 | |
| 93 | def get_element(self, group, name): |
| 94 | """Get a TocElement element identified by name and group from the |
| 95 | container.""" |
| 96 | try: |
| 97 | return self.toc[group][name] |
| 98 | except KeyError: |
| 99 | return None |
| 100 | |
| 101 | def get_element_by_id(self, ident): |
| 102 | """Get a TocElement element identified by index number from the |
| 103 | container.""" |
| 104 | for group in list(self.toc.keys()): |
| 105 | for name in list(self.toc[group].keys()): |
| 106 | if self.toc[group][name].ident == ident: |
| 107 | return self.toc[group][name] |
| 108 | return None |
| 109 | |
| 110 | |
| 111 | class TocFetcher: |
no outgoing calls
no test coverage detected