def process_lines(self, haml_lines, options=None): root = RootNode() line_iter = iter(haml_lines) haml_node = None for line_number, line in enumerate(line_iter): node_lines = line if not root.parent_of(HamlNode(line)).inside_filter_node(): if line.count('{') - line.count('}') == 1: start_multiline = line_number # For exception handling while line.count('{') - line.count('}') != -1: try: line = line_iter.next() except StopIteration: raise Exception( 'No closing brace found for multi-line HAML beginning at line %s' % (start_multiline + 1)) node_lines += line # Blank lines if haml_node is not None and len(node_lines.strip()) == 0: haml_node.newlines += 1 else: haml_node = create_node(node_lines) if haml_node: root.add_node(haml_node) if options and options.debug_tree: return root.debug_tree() else: return root.render()
def process_lines(self, haml_lines): root = RootNode(**self.options_dict) line_iter = iter(haml_lines) haml_node=None for line_number, line in enumerate(line_iter): node_lines = line if not root.parent_of(HamlNode(line)).inside_filter_node(): if line.count('{') - line.count('}') == 1: start_multiline=line_number # For exception handling while line.count('{') - line.count('}') != -1: try: line = line_iter.next() except StopIteration: raise Exception('No closing brace found for multi-line HAML beginning at line %s' % (start_multiline+1)) node_lines += line # Blank lines if haml_node is not None and len(node_lines.strip()) == 0: haml_node.newlines += 1 else: haml_node = create_node(node_lines) if haml_node: root.add_node(haml_node) if self.options_dict and self.options_dict.get('debug_tree'): return root.debug_tree() else: return root.render()
def process_lines(self, haml_lines): root = RootNode(**self.options_dict) line_iter = iter(haml_lines) haml_node=None for line_number, line in enumerate(line_iter): node_lines = line # support for line breaks ("\" symbol at the end of line) while node_lines.rstrip().endswith("\\"): node_lines = node_lines.rstrip()[:-1] try: line = line_iter.next() except StopIteration: raise Exception( "Line break symbol '\\' found at the last line %s" \ % line_number ) node_lines += line if not root.parent_of(HamlNode(line)).inside_filter_node(): if line.count('{') - line.count('}') == 1: start_multiline=line_number # For exception handling while line.count('{') - line.count('}') != -1: try: line = line_iter.next() # support for line breaks inside Node parameters if line.rstrip().endswith("\\"): line = line.rstrip()[:-1] except StopIteration: raise Exception('No closing brace found for multi-line HAML beginning at line %s' % (start_multiline+1)) node_lines += line # Blank lines if haml_node is not None and len(node_lines.strip()) == 0: haml_node.newlines += 1 else: haml_node = create_node(node_lines) if haml_node: root.add_node(haml_node) if self.options_dict and self.options_dict.get('debug_tree'): return root.debug_tree() else: return root.render()