editor_list_2020_a3.py

# -*- coding: utf-8 -*- """ Created on Thu Oct 29 09:26:48 2020 @author: epinsky """ # editor list 2020 A3 x = """The world according to Garp""" x_list = list(x) y = x.split("\n") line = 1 delta = 3 def print_list_file(y, line, delta, sep="$"): print("----> line is: ", line, " delta is: ", delta) l_list = y[ : line] r_list = y[line + 1 : ] l_str = "\n".join(l_list) r_str = "\n".join(r_list) cur_line = y[line] updated_line = cur_line[:delta] + sep + cur_line[delta : ] print(l_str + "\n" + updated_line + "\n" + r_str + "\n") def cmd_h(y, line, delta): """ move left by one """ print("executing cmd_h: move left 1 pos") if delta > 0: delta = delta - 1 elif line > 0: line = line - 1 cur_line = y[line] delta = len(cur_line) return y, line, delta def cmd_ddp(y, line, delta): """ transpose current and next line """ print(" transposing lines") if line < len(y) -1: cur_line = y[line] next_line = y[line+1] y[line] = next_line y[line+1] = cur_line line = line + 1 return y, line, delta # add logic to cases where you have a lot of blank lines def cmd_X(y, line, delta): """ delete cjar to left """ if delta > 0: cur_line = y[line] updated_line = cur_line[ : delta-1] + cur_line[delta : ] y[line] = updated_line delta = delta -1 elif line > 0: prev_line = y[line - 1] updated_line = prev_line[ : -1] y[line-1] = updated_line line = line -1 delta = len(updated_line) return y, line, delta def cmd_dd(y, line, delta): """ delete current line """ if line < len(y)-1: y.pop(line) delta = 0 return y, line, delta def cmd_j(y, line, delta): """ move vertically one line """ if line > 0: prev_line = y[line - 1] if delta < len(prev_line): line = line -1 else: line = line - 1 delta = len(prev_line) return y, line, delta def cmd_n(y, line, delta, target): """ look for target """ cur_line = y[line] pos = cur_line.find(target, delta, len(cur_line)) if pos >=0: delta = pos else: for i in range(line + 1, len(y), 1): next_line = y[i] pos = next_line.find(target) if pos >= 0: line = i delta = pos break return y, line, delta line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_n(y, line, delta,"ing") print_list_file(y, line, delta) line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_n(y, line, delta, "ar") print_list_file(y, line, delta) line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_n(y, line, delta, "I hate this Python class") print_list_file(y, line, delta) """ line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_j(y, line, delta) print_list_file(y, line, delta) line = 0; delta = 5 print_list_file(y, line, delta) y, line, delta = cmd_j(y, line, delta) print_list_file(y, line, delta) line = 1; delta = 12 print_list_file(y, line, delta) y, line, delta = cmd_j(y, line, delta) print_list_file(y, line, delta) """ """ line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_dd(y, line, delta) print_list_file(y, line, delta) line = 1; delta = 0 print_list_file(y, line, delta) y, line, delta = cmd_dd(y, line, delta) print_list_file(y, line, delta) """ """ line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_X(y, line, delta) print_list_file(y, line, delta) line = 1; delta = 0 print_list_file(y, line, delta) y, line, delta = cmd_X(y, line, delta) print_list_file(y, line, delta) line = 0; delta = 0 print_list_file(y, line, delta) y, line, delta = cmd_X(y, line, delta) print_list_file(y, line, delta) """ """ line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_ddp(y, line, delta) print_list_file(y, line, delta) line = 2; delta = 1 print_list_file(y, line, delta) y, line, delta = cmd_ddp(y, line, delta) print_list_file(y, line, delta) """ """ line = 1; delta = 3 print_list_file(y, line, delta) y, line, delta = cmd_h(y, line, delta) print_list_file(y, line, delta) line = 1; delta = 0 print_list_file(y, line, delta) y, line, delta = cmd_h(y, line, delta) print_list_file(y, line, delta) line = 0; delta = 0 print_list_file(y, line, delta) y, line, delta = cmd_h(y, line, delta) print_list_file(y, line, delta) """