(self, code)
return new_code
Accepts a string of code or a list of code lines
Accepts a string of code or a list of code lines
Accepts a string of code or a list of code lines
def indent_code(self, code):
        """Accepts a string of code or a list of code lines"""
        if isinstance(code, string_types):
            code_lines = self.indent_code(code.splitlines(True))
            return ''.join(code_lines)

        free = self._settings['source_format'] == 'free'
        code = [ line.lstrip(' \t') for line in code ]

        inc_keyword = ('do ', 'if(', 'if ', 'do\n', 'else')
        dec_keyword = ('end do', 'enddo', 'end if', 'endif', 'else')

        increase = [ int(any(map(line.startswith, inc_keyword)))
                     for line in code ]
        decrease = [ int(any(map(line.startswith, dec_keyword)))
                     for line in code ]
        continuation = [ int(any(map(line.endswith, ['&', '&\n'])))
                         for line in code ]

        level = 0
        cont_padding = 0
        tabwidth = 3
        new_code = []
        for i, line in enumerate(code):
            if line == '' or line == '\n':
                new_code.append(line)
                continue
            level -= decrease[i]

            if free:
                padding = " "*(level*tabwidth + cont_padding)
            else:
                padding = " "*level*tabwidth

            line = "%s%s" % (padding, line)
            if not free:
                line = self._pad_leading_columns([line])[0]

            new_code.append(line)

            if continuation[i]:
                cont_padding = 2*tabwidth
            else:
                cont_padding = 0
            level += increase[i]

        if not free:
            return self._wrap_fortran(new_code)
        return new_code
def indent_code ( self , code ) : if isinstance ( code , string_types ) : code_lines = self . indent_code ( code . splitlines ( True ) ) return '' . join ( code_lines ) free = self . _settings [ 'source_format' ] == 'free' code = [ line . lstrip ( ' \t' ) for line in code ] inc_keyword = ( 'do ' , 'if(' , 'if ' , 'do\n' , 'else' ) dec_keyword = ( 'end do' , 'enddo' , 'end if' , 'endif' , 'else' ) increase = [ int ( any ( map ( line . startswith , inc_keyword ) ) ) for line in code ] decrease = [ int ( any ( map ( line . startswith , dec_keyword ) ) ) for line in code ] continuation = [ int ( any ( map ( line . endswith , [ '&' , '&\n' ] ) ) ) for line in code ] level = 0 cont_padding = 0 tabwidth = 3 new_code = [ ] for i , line in enumerate ( code ) : if line == '' or line == '\n' : new_code . append ( line ) continue level -= decrease [ i ] if free : padding = " " * ( level * tabwidth + cont_padding ) else : padding = " " * level * tabwidth line = "%s%s" % ( padding , line ) if not free : line = self . _pad_leading_columns ( [ line ] ) [ 0 ] new_code . append ( line ) if continuation [ i ] : cont_padding = 2 * tabwidth else : cont_padding = 0 level += increase [ i ] if not free : return self . _wrap_fortran ( new_code ) return new_code