From: <gr...@us...> - 2015-02-08 23:21:25
|
Revision: 7784 http://sourceforge.net/p/docutils/code/7784 Author: grubert Date: 2015-02-08 23:21:18 +0000 (Sun, 08 Feb 2015) Log Message: ----------- non csv-tables accept option widths Modified Paths: -------------- trunk/docutils/HISTORY.txt trunk/docutils/THANKS.txt trunk/docutils/docutils/parsers/rst/directives/tables.py trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2015-01-13 16:45:41 UTC (rev 7783) +++ trunk/docutils/HISTORY.txt 2015-02-08 23:21:18 UTC (rev 7784) @@ -21,6 +21,10 @@ - Fix [ 262 ] Use ``\linewidth`` instead of ``\textwidth`` for figures, admonitions and docinfo. +* docutils/parsers/rst/directives/tables.py + + - non-csv tables accept widths, patch [120] .1 + Release 0.12 (2014-07-06) ========================= Modified: trunk/docutils/THANKS.txt =================================================================== --- trunk/docutils/THANKS.txt 2015-01-13 16:45:41 UTC (rev 7783) +++ trunk/docutils/THANKS.txt 2015-02-08 23:21:18 UTC (rev 7784) @@ -92,6 +92,7 @@ * Wolfgang Lipp * Edward Loper * Dallas Mahrt +* Brecht Machiels * Mikolaj Machowski * Ken Manheimer * Bob Marshall Modified: trunk/docutils/docutils/parsers/rst/directives/tables.py =================================================================== --- trunk/docutils/docutils/parsers/rst/directives/tables.py 2015-01-13 16:45:41 UTC (rev 7783) +++ trunk/docutils/docutils/parsers/rst/directives/tables.py 2015-02-08 23:21:18 UTC (rev 7784) @@ -29,7 +29,8 @@ optional_arguments = 1 final_argument_whitespace = True option_spec = {'class': directives.class_option, - 'name': directives.unchanged} + 'name': directives.unchanged, + 'widths': directives.positive_int_list} has_content = True def make_title(self): @@ -85,7 +86,7 @@ self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) - def get_column_widths(self, max_cols): + def get_column_widths_from_option(self, max_cols): if 'widths' in self.options: col_widths = self.options['widths'] if len(col_widths) != max_cols: @@ -94,6 +95,12 @@ '(%s).' % (self.name, max_cols), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) + return col_widths + + def get_column_widths(self, max_cols): + col_widths_from_option = self.get_column_widths_from_option(max_cols) + if col_widths_from_option: + col_widths = col_widths_from_option elif max_cols: col_widths = [100 // max_cols] * max_cols else: @@ -130,6 +137,13 @@ return [error] table_node = node[0] table_node['classes'] += self.options.get('class', []) + tgroup = table_node[0] + colspecs = [child for child in tgroup.children + if child.tagname == 'colspec'] + col_widths = self.get_column_widths_from_option(len(colspecs)) + if col_widths: + for colspec, col_width in zip(colspecs, col_widths): + colspec['colwidth'] = col_width self.add_name(table_node) if title: table_node.insert(0, title) Modified: trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py =================================================================== --- trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py 2015-01-13 16:45:41 UTC (rev 7783) +++ trunk/docutils/test/test_parsers/test_rst/test_directives/test_tables.py 2015-02-08 23:21:18 UTC (rev 7784) @@ -184,6 +184,52 @@ <literal_block xml:space="preserve"> .. table:: empty """], +["""\ +.. table:: + :widths: 15, 25 + + ============ ============== + Columns with custom widths. + ============ ============== +""", +"""\ +<document source="test data"> + <table> + <tgroup cols="2"> + <colspec colwidth="15"> + <colspec colwidth="25"> + <tbody> + <row> + <entry> + <paragraph> + Columns with + <entry> + <paragraph> + custom widths. +"""], +["""\ +.. table:: + :widths: 10, 20 + + +--------------+----------------+ + | Columns with | custom widths. | + +--------------+----------------+ +""", +"""\ +<document source="test data"> + <table> + <tgroup cols="2"> + <colspec colwidth="10"> + <colspec colwidth="20"> + <tbody> + <row> + <entry> + <paragraph> + Columns with + <entry> + <paragraph> + custom widths. +"""], ] totest['csv-table'] = [ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |