def run(self, parent, blocks): builder = self._tryReuseLast(parent) if builder is None: builder = HierarchyByIndentationBuilder(CustomHtmlListBuilder(self.parser, parent)) block = blocks.pop(0) # многострочные HTML-комментарии могут поломать структуру списка block = self._replaceHtmlComments(block) for line in block.split('\n'): builder.putLine(line) self._storeLast(parent, builder)
def assertTrace(self, source, expectedTrace): trace = [] builder = HierarchyByIndentationBuilder(TracingHierarchyBuilderWithQueue(trace)) for line in source.strip('\n').split('\n'): builder.putLine(line) if type(expectedTrace) is list: # expectedTrace - массив self.assertEqual(expectedTrace, trace) else: # expectedTrace - строка # используем её как регулярное выражение trace = '#'.join(':'.join(step) for step in trace) expectedTrace = '^' + expectedTrace + '$' self.assertRegex(trace, expectedTrace)