コード例 #1
0
def read_file():
    """Read a file and return its contents as an array"""
    path = request.args.get('path')
    start_line = int(request.args.get('start_line'))
    end_line = int(request.args.get('end_line'))

    start_line = max(1, start_line)  # make sure it's not negative

    try:
        highlight = json.loads(request.args.get('highlight', 'true'))
    except Exception as e:
        if app.debug:
            print('Raising exception since debug is on')
            raise e
        else:
            highlight = True  # highlight argument was invalid for some reason, default to true

    if path and os.path.isfile(path):
        try:
            last_modified = os.path.getmtime(path)
            with open(path, 'r') as f:
                raw_source_code_list = f.read().split('\n')
                num_lines_in_file = len(raw_source_code_list)
                end_line = min(num_lines_in_file, end_line)  # make sure we don't try to go too far

                # if leading lines are '', then the lexer will strip them out, but we want
                # to preserve blank lines. Insert a space whenever we find a blank line.
                for i in range((start_line - 1), (end_line)):
                    if raw_source_code_list[i] == '':
                        raw_source_code_list[i] = ' '
                raw_source_code_lines_of_interest = raw_source_code_list[(start_line - 1):(end_line)]
            try:
                lexer = get_lexer_for_filename(path)
            except Exception:
                lexer = None

            if lexer and highlight:
                highlighted = True
                # convert string into tokens
                tokens = lexer.get_tokens('\n'.join(raw_source_code_lines_of_interest))
                # format tokens into nice, marked up list of html
                formatter = htmllistformatter.HtmlListFormatter()  # Don't add newlines after each line
                source_code = formatter.get_marked_up_list(tokens)
            else:
                highlighted = False
                source_code = raw_source_code_lines_of_interest

            return jsonify({'source_code_array': source_code,
                            'path': path,
                            'last_modified_unix_sec': last_modified,
                            'highlighted': highlighted,
                            'start_line': start_line,
                            'end_line': end_line,
                            'num_lines_in_file': num_lines_in_file})
        except Exception as e:
            return client_error({'message': '%s' % e})

    else:
        return client_error({'message': 'File not found: %s' % path})
コード例 #2
0
ファイル: backend.py プロジェクト: tanghammer/gdbgui
def read_file():
    """Read a file and return its contents as an array"""
    path = request.args.get('path')
    start_line = int(request.args.get('start_line'))
    end_line = int(request.args.get('end_line'))

    try:
        highlight = json.loads(request.args.get('highlight', 'true'))
    except Exception as e:
        if app.debug:
            print('Raising exception since debug is on')
            raise e
        else:
            highlight = True  # highlight argument was invalid for some reason, default to true

    if path and os.path.isfile(path):
        try:
            last_modified = os.path.getmtime(path)
            with open(path, 'r') as f:
                code = f.read()

            formatter = htmllistformatter.HtmlListFormatter(
                lineseparator='')  # Don't add newlines after each line
            try:
                lexer = get_lexer_for_filename(path)
            except Exception:
                lexer = None

            if lexer and highlight:
                highlighted = True
                tokens = lexer.get_tokens(code)  # convert string into tokens
                # format tokens into nice, marked up list of html
                source_code = formatter.get_marked_up_list(tokens)
            else:
                highlighted = False
                source_code = code.split('\n')  # turn long string into a list

            return jsonify({
                'source_code_array':
                source_code[(start_line - 1):(end_line)],
                'path':
                path,
                'last_modified_unix_sec':
                last_modified,
                'highlighted':
                highlighted,
                'start_line':
                start_line,
                'end_line':
                end_line,
                'num_lines_in_file':
                len(source_code)
            })
        except Exception as e:
            return client_error({'message': '%s' % e})

    else:
        return client_error({'message': 'File not found: %s' % path})
コード例 #3
0
ファイル: backend.py プロジェクト: vysecurity/gdbgui
def read_file():
    """Read a file and return its contents as an array"""
    path = request.args.get('path')
    highlight = json.loads(request.args.get('highlight'))

    if path and os.path.isfile(path):
        try:
            last_modified = os.path.getmtime(path)
            with open(path, 'r') as f:
                code = f.read()

            formatter = htmllistformatter.HtmlListFormatter(
                lineseparator='')  # Don't add newlines after each line
            try:
                lexer = get_lexer_for_filename(path)
            except ClassNotFound:
                lexer = None

            if lexer and highlight:
                highlighted = True
                tokens = lexer.get_tokens(code)  # convert string into tokens
                # format tokens into nice, marked up list of html
                source_code = formatter.get_marked_up_list(tokens)
            else:
                highlighted = False
                source_code = code.split('\n')

            return jsonify({
                'source_code': source_code,
                'path': path,
                'last_modified_unix_sec': last_modified,
                'highlighted': highlighted
            })
        except Exception as e:
            return client_error({'message': '%s' % e})

    else:
        return client_error({'message': 'File not found: %s' % path})
コード例 #4
0
def read_file():
    """Read a file and return its contents as an array"""
    path = request.args.get("path")
    start_line = int(request.args.get("start_line"))
    end_line = int(request.args.get("end_line"))

    start_line = max(1, start_line)  # make sure it's not negative

    try:
        highlight = json.loads(request.args.get("highlight", "true"))
    except Exception as e:
        if app.debug:
            print("Raising exception since debug is on")
            raise e

        else:
            highlight = (
                True
            )  # highlight argument was invalid for some reason, default to true

    if path and os.path.isfile(path):
        try:
            last_modified = os.path.getmtime(path)
            with open(path, "r") as f:
                raw_source_code_list = f.read().split("\n")
                num_lines_in_file = len(raw_source_code_list)
                end_line = min(
                    num_lines_in_file,
                    end_line)  # make sure we don't try to go too far

                # if leading lines are '', then the lexer will strip them out, but we want
                # to preserve blank lines. Insert a space whenever we find a blank line.
                for i in range((start_line - 1), (end_line)):
                    if raw_source_code_list[i] == "":
                        raw_source_code_list[i] = " "
                raw_source_code_lines_of_interest = raw_source_code_list[(
                    start_line - 1):(end_line)]
            try:
                lexer = get_lexer_for_filename(path)
            except Exception:
                lexer = None

            if lexer and highlight:
                highlighted = True
                # convert string into tokens
                tokens = lexer.get_tokens(
                    "\n".join(raw_source_code_lines_of_interest))
                # format tokens into nice, marked up list of html
                formatter = (htmllistformatter.HtmlListFormatter()
                             )  # Don't add newlines after each line
                source_code = formatter.get_marked_up_list(tokens)
            else:
                highlighted = False
                source_code = raw_source_code_lines_of_interest

            return jsonify({
                "source_code_array": source_code,
                "path": path,
                "last_modified_unix_sec": last_modified,
                "highlighted": highlighted,
                "start_line": start_line,
                "end_line": end_line,
                "num_lines_in_file": num_lines_in_file,
            })

        except Exception as e:
            return client_error({"message": "%s" % e})

    else:
        return client_error({"message": "File not found: %s" % path})