Skip to content

Commit

Permalink
Table converter: first column is bold when "vertical" class is used. #6
Browse files Browse the repository at this point in the history
  • Loading branch information
jone committed May 2, 2012
1 parent 9e488f9 commit f9e526f
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
10 changes: 10 additions & 0 deletions ftw/pdfgenerator/html2latex/subconverters/table.py
Expand Up @@ -387,6 +387,10 @@ def is_last_column(self):
columns = self.table_converter.columns columns = self.table_converter.columns
return columns[-1] == self return columns[-1] == self


def is_first_column(self):
columns = self.table_converter.columns
return columns[0] == self



class LatexRow(object): class LatexRow(object):
""" """
Expand Down Expand Up @@ -602,6 +606,12 @@ def is_head_cell(self):
elif self.dom_cell.tagName.lower() == 'th': elif self.dom_cell.tagName.lower() == 'th':
# cell is a <th> # cell is a <th>
return True return True

elif 'vertical' in self.table_converter.get_css_classes() \
and self.columns[0].is_first_column():
# "vertical" class makes first column to be "head" cells.
return True

else: else:
# not a head cell # not a head cell
return False return False
Expand Down
48 changes: 48 additions & 0 deletions ftw/pdfgenerator/tests/test_html2latex_table_subconverter.py
Expand Up @@ -767,6 +767,54 @@ def test_listing_css_class(self):


self.assertEqual(self.convert(html), latex) self.assertEqual(self.convert(html), latex)


def test_vertical_css_class_makes_first_column_bold(self):
html = '\n'.join((
r'<table class="no-page-break vertical">',
r' <colgroup>',
r' <col width="50%" />'
r' <col width="25%" />'
r' <col width="25%" />'
r' </colgroup>',
r' <thead>',
r' <tr>',
r' <th colspan="3">heading</th>',
r' </tr>',
r' </thead>',
r' <tbody>',
r' <tr>',
r' <td>content 1A</td>',
r' <td rowspan="2">content 1/2 B</td>',
r' <td>content 1C</td>',
r' </tr>',
r' <tr>',
r' <td>content 2A</td>',
r' <td>content 2C</td>',
r' </tr>',
r' </tbody>',
r'</table>'))

latex = '\n'.join((
r'\begin{tabular}{p{0.5\linewidth}p{0.25\linewidth}' + \
'p{0.25\linewidth}}',

r'\multicolumn{3}{p{1.0\linewidth}}{\textbf{heading}} \\',

r'\multicolumn{1}{p{0.5\linewidth}}' + \
r'{\textbf{content 1A}} & ' + \
r'\multirow{2}{0.25\textwidth}{content 1/2 B} & ' + \
r'\multicolumn{1}{p{0.25\linewidth}}{content 1C} \\',

r'\multicolumn{1}{p{0.5\linewidth}}' + \
r'{\textbf{content 2A}} & ' + \
r' & ' + \
r'\multicolumn{1}{p{0.25\linewidth}}{content 2C} \\',

r'\end{tabular}',
r''
))

self.assertEqual(self.convert(html), latex)

def test_border_classes(self): def test_border_classes(self):
html = '\n'.join(( html = '\n'.join((
r'<table class="no-page-break">', r'<table class="no-page-break">',
Expand Down

0 comments on commit f9e526f

Please sign in to comment.