From fdfa4b12c27869b4a556c445c3d3a005bceb2bb5 Mon Sep 17 00:00:00 2001 From: Dhruva Sagar Date: Mon, 23 Nov 2015 14:53:05 +0530 Subject: [PATCH] Add tablemode#table#IsTable --- autoload/tablemode/spreadsheet.vim | 10 +++++----- autoload/tablemode/spreadsheet/cell.vim | 4 ++-- autoload/tablemode/table.vim | 10 +++++++--- t/table.vim | 23 +++++++++++++++++++++++ 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/autoload/tablemode/spreadsheet.vim b/autoload/tablemode/spreadsheet.vim index 4ec31c7..6f79d5c 100644 --- a/autoload/tablemode/spreadsheet.vim +++ b/autoload/tablemode/spreadsheet.vim @@ -41,7 +41,7 @@ function! tablemode#spreadsheet#GetLastRow(line) "{{{2 if tablemode#table#IsRow(a:line) let line = tablemode#utils#line(a:line) - while tablemode#table#IsRow(line + 1) || tablemode#table#IsBorder(line + 1) + while tablemode#table#IsTable(line + 1) let line += 1 endwhile if tablemode#table#IsBorder(line) | let line -= 1 | endif @@ -61,7 +61,7 @@ function! tablemode#spreadsheet#LineNr(line, row) "{{{2 let line = tablemode#spreadsheet#GetFirstRow(a:line) let row_nr = 0 - while tablemode#table#IsRow(line + 1) || tablemode#table#IsBorder(line + 1) + while tablemode#table#IsTable(line + 1) if tablemode#table#IsRow(line) let row_nr += 1 if a:row ==# row_nr | break | endif @@ -77,7 +77,7 @@ function! tablemode#spreadsheet#RowNr(line) "{{{2 let line = tablemode#utils#line(a:line) let rowNr = 0 - while !tablemode#table#IsHeader(line) && (tablemode#table#IsRow(line) || tablemode#table#IsBorder(line)) + while !tablemode#table#IsHeader(line) && tablemode#table#IsTable(line) if tablemode#table#IsRow(line) | let rowNr += 1 | endif let line -= 1 endwhile @@ -89,13 +89,13 @@ function! tablemode#spreadsheet#RowCount(line) "{{{2 let line = tablemode#utils#line(a:line) let [tline, totalRowCount] = [line, 0] - while !tablemode#table#IsHeader(tline) && (tablemode#table#IsRow(tline) || tablemode#table#IsBorder(tline)) + while !tablemode#table#IsHeader(tline) && tablemode#table#IsTable(tline) if tablemode#table#IsRow(tline) | let totalRowCount += 1 | endif let tline -= 1 endwhile let tline = line + 1 - while !tablemode#table#IsHeader(tline) && (tablemode#table#IsRow(tline) || tablemode#table#IsBorder(tline)) + while !tablemode#table#IsHeader(tline) && tablemode#table#IsTable(tline) if tablemode#table#IsRow(tline) | let totalRowCount += 1 | endif let tline += 1 endwhile diff --git a/autoload/tablemode/spreadsheet/cell.vim b/autoload/tablemode/spreadsheet/cell.vim index 0b88831..d1d912b 100644 --- a/autoload/tablemode/spreadsheet/cell.vim +++ b/autoload/tablemode/spreadsheet/cell.vim @@ -58,7 +58,7 @@ function! tablemode#spreadsheet#cell#GetCells(line, ...) abort if row == 0 let values = [] let line = first_row - while tablemode#table#IsRow(line) || tablemode#table#IsBorder(line) + while tablemode#table#IsTable(line) if tablemode#table#IsRow(line) let row_line = getline(line)[stridx(getline(line), g:table_mode_separator):strridx(getline(line), g:table_mode_separator)] call add(values, tablemode#utils#strip(get(split(row_line, g:table_mode_separator), colm>0?colm-1:colm, ''))) @@ -70,7 +70,7 @@ function! tablemode#spreadsheet#cell#GetCells(line, ...) abort let row_nr = 0 let row_diff = row > 0 ? 1 : -1 let line = row > 0 ? first_row : last_row - while tablemode#table#IsRow(line) || tablemode#table#IsBorder(line) + while tablemode#table#IsTable(line) if tablemode#table#IsRow(line) let row_nr += row_diff if row ==# row_nr | break | endif diff --git a/autoload/tablemode/table.vim b/autoload/tablemode/table.vim index 91cdc2b..d93fdbc 100644 --- a/autoload/tablemode/table.vim +++ b/autoload/tablemode/table.vim @@ -149,7 +149,11 @@ function! tablemode#table#IsHeader(line) "{{{2 endfunction function! tablemode#table#IsRow(line) "{{{2 - return !tablemode#table#IsBorder(a:line) && getline(a:line) =~# (tablemode#table#StartExpr() . g:table_mode_separator) + return !tablemode#table#IsBorder(a:line) && getline(a:line) =~# (tablemode#table#StartExpr() . g:table_mode_separator) . '[^' . g:table_mode_separator . ']\+' +endfunction + +function! tablemode#table#IsTable(line) "{{{2 + return tablemode#table#IsRow(a:line) || tablemode#table#IsBorder(a:line) endfunction function! tablemode#table#AddBorder(line) "{{{2 @@ -161,7 +165,7 @@ function! tablemode#table#Realign(line) "{{{2 let lines = [] let [lnum, blines] = [line, []] - while tablemode#table#IsRow(lnum) || tablemode#table#IsBorder(lnum) + while tablemode#table#IsTable(lnum) if tablemode#table#IsBorder(lnum) call insert(blines, lnum) let lnum -= 1 @@ -172,7 +176,7 @@ function! tablemode#table#Realign(line) "{{{2 endwhile let lnum = line + 1 - while tablemode#table#IsRow(lnum) || tablemode#table#IsBorder(lnum) + while tablemode#table#IsTable(lnum) if tablemode#table#IsBorder(lnum) call add(blines, lnum) let lnum += 1 diff --git a/t/table.vim b/t/table.vim index 6b9b0f1..516467c 100644 --- a/t/table.vim +++ b/t/table.vim @@ -40,6 +40,29 @@ describe 'table' end end + describe 'IsTable' + before + new normal! ggdG + read t/fixtures/table/sample_with_header.txt + end + + it 'should be true on a table row' + Expect tablemode#table#IsTable(2) to_be_true + Expect tablemode#table#IsTable(4) to_be_true + Expect tablemode#table#IsTable(5) to_be_true + end + + it 'should be true when on a table border' + Expect tablemode#table#IsTable(1) to_be_true + Expect tablemode#table#IsTable(3) to_be_true + Expect tablemode#table#IsTable(6) to_be_true + end + + it 'should not be true when not on a table' + Expect tablemode#table#IsTable(7) to_be_false + end + end + describe 'IsHeader' before new