def parse_clients(content): lines = content.splitlines() index = 0 skip = 0 for line in lines: if skip > 0: skip -= 1 continue match = CLIENT.match(line.strip()) if match: name = match.group(1) c_content = parse_block('\n'.join(lines[index + 1:]), '{', '}') client = parse_client(name, c_content) skip = len(c_content.splitlines()) client['id'] = index client['start'] = index client['end'] = index + skip + 2 index += skip yield client index += 1
def _get_block(self, content): match = self.FUNCTION.search(content) if match: return parse_block(content[match.end():], '{', '}') return None