From f84c47622786b654f2dfbe2e6d79b7f269a91a06 Mon Sep 17 00:00:00 2001 From: Vincent Driessen Date: Thu, 19 Aug 2010 12:21:08 +0200 Subject: Add line partitioner. Is able to parse tables of the form: +=====+=====================+ | Foo | Bar | +=====+=====================+ | x | This is a long line | | | that is spread out | | | over multiple lines | +-----+---------------------+ Into: [['Foo', 'Bar'], ['x', 'This is a long line\nthat is spread out\nover multiple lines']] The draw_table function needs to be written still, though. --- tests/test_rst_tables.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'tests') diff --git a/tests/test_rst_tables.py b/tests/test_rst_tables.py index 0f1f354..381adf8 100644 --- a/tests/test_rst_tables.py +++ b/tests/test_rst_tables.py @@ -22,7 +22,8 @@ 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 + pad_fields, unify_table, join_rows, \ + partition_raw_lines class TestRSTTableFormatter(unittest.TestCase): @@ -67,6 +68,19 @@ class TestRSTTableFormatter(unittest.TestCase): expected = ['x foo apple', 'y bar', 'z pear'] self.assertEquals(expected, join_rows(input_rows, sep=' ')) + def testPartitionRawLines(self): + self.assertEquals([], partition_raw_lines([])) + self.assertEquals([['']], partition_raw_lines([''])) + self.assertEquals( + [['foo'], ['bar']], + partition_raw_lines(['foo', 'bar'])) + self.assertEquals( + [['foo'], ['bar']], + partition_raw_lines(['foo', '+----+', 'bar'])) + self.assertEquals( + [['foo', 'bar'], ['baz']], + partition_raw_lines(['+-----+', 'foo', 'bar', '----', 'baz'])) + def testParseSimpleTable(self): self.assertEquals([['x y z']], parse_table(['x y z'])) self.assertEquals([['x', 'y z']], parse_table(['x y z'])) @@ -119,8 +133,7 @@ class TestRSTTableFormatter(unittest.TestCase): 'blah | A new line| ', '+-----+----+'] expect = [['Foo', 'Mu'], - ['x', 'This became somewhat larger'], - ['blah', 'A new line']] + ['x\nblah', 'This became somewhat larger\nA new line']] self.assertEquals(expect, parse_table(input)) input = ['+===+-----====+', @@ -130,8 +143,7 @@ class TestRSTTableFormatter(unittest.TestCase): 'blah | A new line|| ', '+-----+----+'] expect = [['Foo', 'Mu'], - ['x', 'This became somewhat larger'], - ['blah', 'A new line']] + ['x\nblah', 'This became somewhat larger\nA new line']] self.assertEquals(expect, parse_table(input)) def testTableLine(self): -- cgit v1.2.3