Example #1
0
    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()
Example #2
0
    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()
Example #3
0
    def process_lines(self, haml_lines):
        root = RootNode()
        line_iter = iter(haml_lines)

        haml_node = None
        for line_number, line in enumerate(line_iter):
            node_lines = line

            # Check for multi-line string when parent is not a FilterNode
            if not isinstance(root.parent(HamlNode(line)), FilterNode):
                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)
                root.add_node(haml_node)
        return root.render()
Example #4
0
    def process_lines(self, haml_lines):
        root = RootNode()
        line_iter = iter(haml_lines)

        haml_node=None
        for line_number, line in enumerate(line_iter):
            node_lines = line

            # Check for multi-line string when parent is not a FilterNode
            if not isinstance(root.parent( HamlNode(line) ), FilterNode):
                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)
                root.add_node(haml_node)
        return root.render()
Example #5
0
 def process_lines(self, haml_lines):
     root = RootNode()
     line_iter = iter(haml_lines)
     for line in line_iter:
         node_lines = line
         if MULTILINE_ATTR_ELEMENT_REGEX.match(line.strip()):
             while "}" not in line:
                 line = line_iter.next()
                 node_lines += line
         haml_node = create_node(node_lines)
         root.add_node(haml_node)
     return root.render()
Example #6
0
File: hamlpy.py Project: a1s/HamlPy
    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()
Example #7
0
    def process_lines(self, haml_lines):
        root = RootNode()
        line_iter = iter(haml_lines)

        for line_number, line in enumerate(line_iter):
            node_lines = line

            # Check for multi-line only when last node isn't FilterNode or when last node isn't parent of this node
            if (not(len(root.internal_nodes)>0 and isinstance(root.internal_nodes[-1], FilterNode))) or not root._should_go_inside_last_node(HamlNode(line)):
                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
            haml_node = create_node(node_lines)
            root.add_node(haml_node)
        return root.render()
Example #8
0
 def process_lines(self, haml_lines):
     root = RootNode()
     for line in haml_lines:
         haml_node = create_node(line)
         root.add_node(haml_node)
     return root.render()
Example #9
0
 def process_lines(self, haml_lines):
     root = RootNode()
     for line in haml_lines:
         haml_node = create_node(line)
         root.add_node(haml_node)
     return root.render()