Get level of indentation based on list level.
(self, parent: etree.Element, block: str)
| 220 | self.parser.parseBlocks(li, [block]) |
| 221 | |
| 222 | def get_level(self, parent: etree.Element, block: str) -> tuple[int, etree.Element]: |
| 223 | """ Get level of indentation based on list level. """ |
| 224 | # Get indent level |
| 225 | m = self.INDENT_RE.match(block) |
| 226 | if m: |
| 227 | indent_level = len(m.group(1))/self.tab_length |
| 228 | else: |
| 229 | indent_level = 0 |
| 230 | if self.parser.state.isstate('list'): |
| 231 | # We're in a tight-list - so we already are at correct parent. |
| 232 | level = 1 |
| 233 | else: |
| 234 | # We're in a loose-list - so we need to find parent. |
| 235 | level = 0 |
| 236 | # Step through children of tree to find matching indent level. |
| 237 | while indent_level > level: |
| 238 | child = self.lastChild(parent) |
| 239 | if (child is not None and |
| 240 | (child.tag in self.LIST_TYPES or child.tag in self.ITEM_TYPES)): |
| 241 | if child.tag in self.LIST_TYPES: |
| 242 | level += 1 |
| 243 | parent = child |
| 244 | else: |
| 245 | # No more child levels. If we're short of `indent_level`, |
| 246 | # we have a code block. So we stop here. |
| 247 | break |
| 248 | return level, parent |
| 249 | |
| 250 | |
| 251 | class CodeBlockProcessor(BlockProcessor): |