def get_point_row_and_col(view, from_point): """Return the row and col the current point is in the table. """ line_num, _ = view.rowcol(from_point) line_num -= 1 line_text = utilities.text_at_line(view, line_num) row_num = 0 while line_text and (TABLE_PATTERN.match(line_text) or SEPARATOR_PATTERN.match(line_text)): row_num += 1 line_num -= 1 line_text = utilities.text_at_line(view, line_num) line_start_point = view.line(from_point) region = sublime.Region(line_start_point.a, from_point) precedding_text = view.substr(region) split_row = precedding_text.split("|") if len(split_row) >= 2: col_num = len(split_row) - 2 elif split_row[0].strip() == "": col_num = -1 else: col_num = None return (row_num, col_num)
def convert_table_above_or_below_as_list(view, from_point, above): """Convert the table above the point as python list. Returns ------- table: list A nested list representing the table. """ line_num, _ = view.rowcol(from_point) line_num += - 1 if above else 1 line_text = utilities.text_at_line(view, line_num) table = [] while line_text and (TABLE_PATTERN.match(line_text) or SEPARATOR_PATTERN.match(line_text)): table.append(_convert_row_text_as_list(line_text)) line_num += -1 if above else 1 line_text = utilities.text_at_line(view, line_num) if above: table = table[::-1] return table
def convert_table_above_or_below_as_list(view, from_point, above): """Convert the table above the point as python list. Returns ------- table: list A nested list representing the table. """ line_num, _ = view.rowcol(from_point) line_num += -1 if above else 1 line_text = utilities.text_at_line(view, line_num) table = [] while line_text and (TABLE_PATTERN.match(line_text) or SEPARATOR_PATTERN.match(line_text)): table.append(_convert_row_text_as_list(line_text)) line_num += -1 if above else 1 line_text = utilities.text_at_line(view, line_num) if above: table = table[::-1] return table
def convert_row_at_point_as_list(view, from_point): """Convert the row at point as a python list. """ line_num, _ = view.rowcol(from_point) line_text = utilities.text_at_line(view, line_num) return _convert_row_text_as_list(line_text)
def is_line_separator(view, line_num): """Check if the current line is a separator. """ text = utilities.text_at_line(view, line_num) if text and SEPARATOR_PATTERN.match(text): return True else: return False