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})
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})
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})
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})