diff options
| author | VG <vg@devys.org> | 2015-07-24 17:37:15 +0200 | 
|---|---|---|
| committer | VG <vg@devys.org> | 2015-07-24 17:37:15 +0200 | 
| commit | 531ad8f2baa5fefdf2f92c6473d5098f4bbeb1b5 (patch) | |
| tree | fad0bcc078b735bd08120f0f02b3a73c1d763d6b /src | |
| parent | ab212a360ed1c0d10a1f6bf02beee28979a30922 (diff) | |
| download | vim-rst-tables-531ad8f2baa5fefdf2f92c6473d5098f4bbeb1b5.tar.gz vim-rst-tables-531ad8f2baa5fefdf2f92c6473d5098f4bbeb1b5.tar.bz2 vim-rst-tables-531ad8f2baa5fefdf2f92c6473d5098f4bbeb1b5.zip  | |
remove src and build.py since they are not used
Diffstat (limited to 'src')
| -rw-r--r-- | src/base.vim | 32 | ||||
| -rw-r--r-- | src/rst_tables.py | 274 | 
2 files changed, 0 insertions, 306 deletions
diff --git a/src/base.vim b/src/base.vim deleted file mode 100644 index 037a9dd..0000000 --- a/src/base.vim +++ /dev/null @@ -1,32 +0,0 @@ -" -" reStructuredText tables plugin -" Language:     Python (ft=python) -" Maintainer:   Vincent Driessen <vincent@datafox.nl> -" Version:      Vim 7 (may work with lower Vim versions, but not tested) -" URL:          http://github.com/nvie/vim-rst-tables -" -" This plugin is a more flexible reimplementation of the ideas and the -" existing Vim plugin by Hugo Ruscitti: -"   http://www.vim.org/scripts/script.php?script_id=3041 -" - -" Only do this when not done yet for this buffer -if exists("g:loaded_rst_tables_ftplugin") -    finish -endif -let loaded_rst_tables_ftplugin = 1 - -python << endpython -__PYTHON_SOURCE__ -endpython - -" Add mappings, unless the user didn't want this. -" The default mapping is registered, unless the user remapped it already. -if !exists("no_plugin_maps") && !exists("no_rst_table_maps") -    if !hasmapto('ReformatTable(') -        noremap <silent> <leader><leader>c :call ReformatTable()<CR> -    endif -    if !hasmapto('ReflowTable(') -        noremap <silent> <leader><leader>f :call ReflowTable()<CR> -    endif -endif diff --git a/src/rst_tables.py b/src/rst_tables.py deleted file mode 100644 index 50f5b3b..0000000 --- a/src/rst_tables.py +++ /dev/null @@ -1,274 +0,0 @@ -import vim -import re -import textwrap -from vim_bridge import bridged - - -def get_table_bounds(): -    row, col = vim.current.window.cursor -    upper = lower = row -    try: -        while vim.current.buffer[upper - 1].strip(): -            upper -= 1 -    except IndexError: -        pass -    else: -        upper += 1 - -    try: -        while vim.current.buffer[lower - 1].strip(): -            lower += 1 -    except IndexError: -        pass -    else: -        lower -= 1 - -    match = re.match('^(\s*).*$', vim.current.buffer[upper-1]) - -    return (upper, lower, match.group(1)) - -def join_rows(rows, sep='\n'): -    """Given a list of rows (a list of lists) this function returns a -    flattened list where each the individual columns of all rows are joined -    together using the line separator. - -    """ -    output = [] -    for row in rows: -        # grow output array, if necessary -        if len(output) <= len(row): -            for i in range(len(row) - len(output)): -                output.extend([[]]) - -        for i, field in enumerate(row): -            field_text = field.strip() -            if field_text: -                output[i].append(field_text) -    return map(lambda lines: sep.join(lines), output) - - -def line_is_separator(line): -    return re.match('^[\t +=-]+$', line) - - -def has_line_seps(raw_lines): -    for line in raw_lines: -        if line_is_separator(line): -            return True -    return False - - -def partition_raw_lines(raw_lines): -    """Partitions a list of raw input lines so that between each partition, a -    table row separator can be placed. - -    """ -    if not has_line_seps(raw_lines): -        return map(lambda x: [x], raw_lines) - -    curr_part = [] -    parts = [curr_part] -    for line in raw_lines: -        if line_is_separator(line): -            curr_part = [] -            parts.append(curr_part) -        else: -            curr_part.append(line) - -    # remove any empty partitions (typically the first and last ones) -    return filter(lambda x: x != [], parts) - - -def unify_table(table): -    """Given a list of rows (i.e. a table), this function returns a new table -    in which all rows have an equal amount of columns.  If all full column is -    empty (i.e. all rows have that field empty), the column is removed. - -    """ -    max_fields = max(map(lambda row: len(row), table)) -    empty_cols = [True] * max_fields -    output = [] -    for row in table: -        curr_len = len(row) -        if curr_len < max_fields: -            row += [''] * (max_fields - curr_len) -        output.append(row) - -        # register empty columns (to be removed at the end) -        for i in range(len(row)): -            if row[i].strip(): -                empty_cols[i] = False - -    # remove empty columns from all rows -    table = output -    output = [] -    for row in table: -        cols = [] -        for i in range(len(row)): -            should_remove = empty_cols[i] -            if not should_remove: -                cols.append(row[i]) -        output.append(cols) - -    return output - - -def split_table_row(row_string): -    if row_string.find("|") >= 0: -        # first, strip off the outer table drawings -        row_string = re.sub(r'^\s*\||\|\s*$', '', row_string) -        return re.split(r'\s*\|\s*', row_string.strip()) -    return re.split(r'\s\s+', row_string.rstrip()) - - -def parse_table(raw_lines): -    row_partition = partition_raw_lines(raw_lines) -    lines = map(lambda row_string: join_rows(map(split_table_row, row_string)), -                row_partition) -    return unify_table(lines) - - -def table_line(widths, header=False): -    if header: -        linechar = '=' -    else: -        linechar = '-' -    sep = '+' -    parts = [] -    for width in widths: -        parts.append(linechar * width) -    if parts: -        parts = [''] + parts + [''] -    return sep.join(parts) - - -def get_field_width(field_text): -    return max(map(lambda s: len(s), field_text.split('\n'))) - - -def split_row_into_lines(row): -    row = map(lambda field: field.split('\n'), row) -    height = max(map(lambda field_lines: len(field_lines), row)) -    turn_table = [] -    for i in range(height): -        fields = [] -        for field_lines in row: -            if i < len(field_lines): -                fields.append(field_lines[i]) -            else: -                fields.append('') -        turn_table.append(fields) -    return turn_table - - -def get_column_widths(table): -    widths = [] -    for row in table: -        num_fields = len(row) -        # dynamically grow -        if num_fields >= len(widths): -            widths.extend([0] * (num_fields - len(widths))) -        for i in range(num_fields): -            field_text = row[i] -            field_width = get_field_width(field_text) -            widths[i] = max(widths[i], field_width) -    return widths - - -def get_column_widths_from_border_spec(slice): -    border = None -    for row in slice: -        if line_is_separator(row): -            border = row.strip() -            break - -    if border is None: -        raise RuntimeError('Cannot reflow this table. Top table border not found.') - -    left = right = None -    if border[0] == '+': -        left = 1 -    if border[-1] == '+': -        right = -1 -    return map(lambda drawing: max(0, len(drawing) - 2), border[left:right].split('+')) - - -def pad_fields(row, widths): -    """Pads fields of the given row, so each field lines up nicely with the -    others. - -    """ -    widths = map(lambda w: ' %-' + str(w) + 's ', widths) - -    # Pad all fields using the calculated widths -    new_row = [] -    for i in range(len(row)): -        col = row[i] -        col = widths[i] % col.strip() -        new_row.append(col) -    return new_row - - -def reflow_row_contents(row, widths): -    new_row = [] -    for i, field in enumerate(row): -        wrapped_lines = textwrap.wrap(field.replace('\n', ' '), widths[i]) -        new_row.append("\n".join(wrapped_lines)) -    return new_row - - -def draw_table(indent, table, manual_widths=None): -    if table == []: -        return [] - -    if manual_widths is None: -        col_widths = get_column_widths(table) -    else: -        col_widths = manual_widths - -    # Reserve room for the spaces -    sep_col_widths = map(lambda x: x + 2, col_widths) -    header_line = table_line(sep_col_widths, header=True) -    normal_line = table_line(sep_col_widths, header=False) - -    output = [indent+normal_line] -    first = True -    for row in table: - -        if manual_widths: -            row = reflow_row_contents(row, manual_widths) - -        row_lines = split_row_into_lines(row) - -        # draw the lines (num_lines) for this row -        for row_line in row_lines: -            row_line = pad_fields(row_line, col_widths) -            output.append(indent+"|".join([''] + row_line + [''])) - -        # then, draw the separator -        if first: -            output.append(indent+header_line) -            first = False -        else: -            output.append(indent+normal_line) - -    return output - - -@bridged -def reformat_table(): -    upper, lower, indent = get_table_bounds() -    slice = vim.current.buffer[upper - 1:lower] -    table = parse_table(slice) -    slice = draw_table(indent, table) -    vim.current.buffer[upper - 1:lower] = slice - - -@bridged -def reflow_table(): -    upper, lower, indent = get_table_bounds() -    slice = vim.current.buffer[upper - 1:lower] -    widths = get_column_widths_from_border_spec(slice) -    table = parse_table(slice) -    slice = draw_table(indent, table, widths) -    vim.current.buffer[upper - 1:lower] = slice  | 
