diff options
author | Vincent Driessen <vincent@datafox.nl> | 2010-08-20 10:27:41 +0200 |
---|---|---|
committer | Vincent Driessen <vincent@datafox.nl> | 2010-08-20 10:27:41 +0200 |
commit | 4422e1fbb74a85fd7167d9506c837cdfd09311ee (patch) | |
tree | 0ad81c6b8c7be28b52116ecfd706134ad72399d7 /tests | |
parent | a53ef0ff2f7c8cc1f4efbabf59ed98ceb5bb2923 (diff) | |
download | vim-rst-tables-4422e1fbb74a85fd7167d9506c837cdfd09311ee.tar.gz vim-rst-tables-4422e1fbb74a85fd7167d9506c837cdfd09311ee.tar.bz2 vim-rst-tables-4422e1fbb74a85fd7167d9506c837cdfd09311ee.zip |
Implemented the "reflow" command.
For example, if you have the following table in your source file:
Type Message
Foo I like bananas very much. Even so much that I adore them.
Position your cursor in it and call ReformatTable(). This makes the
following:
+======+===========================================================+
| Type | Message |
+======+===========================================================+
| Foo | I like bananas very much. Even so much that I adore them. |
+------+-----------------------------------------------------------+
But if you don't like these kinds of long wrappings, you can now simply
remove (or add, for that matter) some of the '='-signs from the top row,
like this:
+======+================================+
| Type | Message |
+======+===========================================================+
| Foo | I like bananas very much. Even so much that I adore them. |
+------+-----------------------------------------------------------+
And then, call ReflowTable():
+======+================================+
| Type | Message |
+======+================================+
| Foo | I like bananas very much. Even |
| | so much that I adore them. |
+------+--------------------------------+
This fixed issue #1.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fixtures/reflow.txt | 14 | ||||
-rw-r--r-- | tests/test_rst_tables.py | 59 |
2 files changed, 70 insertions, 3 deletions
diff --git a/tests/fixtures/reflow.txt b/tests/fixtures/reflow.txt new file mode 100644 index 0000000..f1dbc1e --- /dev/null +++ b/tests/fixtures/reflow.txt @@ -0,0 +1,14 @@ +This is paragraph text *before* the table. + ++==========+==========================+ +| Column 1 | Column 2 | ++==========+================================================================================================+ +| Foo | Put two (or more) spaces as a field separator. | ++----------+------------------------------------------------------------------------------------------------+ +| Bar | Even very very long lines like these are fine, as long as you do not put in line endings here. | ++----------+------------------------------------------------------------------------------------------------+ +| Qux | This is the last line. | ++----------+------------------------------------------------------------------------------------------------+ + +This is paragraph text *after* the table, with +a line ending. diff --git a/tests/test_rst_tables.py b/tests/test_rst_tables.py index 7d72e25..a86e401 100644 --- a/tests/test_rst_tables.py +++ b/tests/test_rst_tables.py @@ -21,9 +21,10 @@ import unittest # Load test subjects from rst_tables import get_table_bounds, reformat_table, parse_table, \ - draw_table, table_line, get_column_widths, \ - pad_fields, unify_table, join_rows, \ - partition_raw_lines, split_row_into_lines + reflow_table, draw_table, table_line, get_column_widths, \ + get_column_widths_from_border_spec, pad_fields, unify_table, \ + join_rows, partition_raw_lines, split_row_into_lines, \ + reflow_row_contents class TestRSTTableFormatter(unittest.TestCase): @@ -210,6 +211,13 @@ class TestRSTTableFormatter(unittest.TestCase): get_column_widths([['Foo\nBar\nQux', 'This\nis\nreally\nneat!']])) + def testGetColumnWidthsFromBorderSpec(self): + input = ['+====+=====+==+=======+', + '| xx | xxx | | xxxxx |', + '+====+=====+==+=======+'] + self.assertEquals([2, 3, 0, 5], + get_column_widths_from_border_spec(input)) + def testPadFields(self): table = [['Name', 'Type', 'Description'], ['Lollypop', 'Candy', 'Yummy'], @@ -222,6 +230,23 @@ class TestRSTTableFormatter(unittest.TestCase): for input, expect in zip(table, expected_padding): self.assertEquals(expect, pad_fields(input, widths)) + def testReflowRowContentsWithEnoughWidth(self): + input = ['Foo\nbar', 'This line\nis spread\nout over\nfour lines.'] + expect = ['Foo bar', 'This line is spread out over four lines.'] + self.assertEquals(expect, reflow_row_contents(input, [99,99])) + + def testReflowRowContentsWithWrapping(self): + input = ['Foo\nbar', 'This line\nis spread\nout over\nfour lines.'] + expect = ['Foo bar', 'This line is spread\nout over four lines.'] + self.assertEquals(expect, reflow_row_contents(input, [10,20])) + + input = ['Foo\nbar', 'This line\nis spread\nout over\nfour lines.'] + expect = ['Foo bar', 'This\nline\nis\nspread\nout\nover\nfour\nlines.'] + self.assertEquals(expect, reflow_row_contents(input, [10,6])) + + def testReflowRowContentsWithoutRoom(self): + #self.assertEquals(expect, reflow_row_contents(input)) + pass def testDrawTable(self): self.assertEquals([], draw_table([])) @@ -236,6 +261,7 @@ class TestRSTTableFormatter(unittest.TestCase): '+-----+----+'], draw_table([['Foo', 'Mu'], ['x', 'y']])) + def testCreateTable(self): self.load_fixture_in_vim('default') expect = """\ @@ -278,3 +304,30 @@ a line ending. +----------------+---------------------------------------------------------------+ """.rstrip().split('\n') self.assertEquals(expect, draw_table(parse_table(raw_lines))) + + def testReflowTable(self): + self.load_fixture_in_vim('reflow') + expect = """\ +This is paragraph text *before* the table. + ++==========+==========================+ +| Column 1 | Column 2 | ++==========+==========================+ +| Foo | Put two (or more) spaces | +| | as a field separator. | ++----------+--------------------------+ +| Bar | Even very very long | +| | lines like these are | +| | fine, as long as you do | +| | not put in line endings | +| | here. | ++----------+--------------------------+ +| Qux | This is the last line. | ++----------+--------------------------+ + +This is paragraph text *after* the table, with +a line ending. +""".split('\n') + reflow_table() + self.assertEquals(expect, vim.current.buffer) + |