diff options
author | Kane Blueriver <kxxoling@gmail.com> | 2016-11-13 23:32:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-13 23:32:10 +0800 |
commit | 4676e41472725b03badcd9517f5aa2c2a41c1ebf (patch) | |
tree | f72e62fbe4a8db284efdb0424fd738e1c64c9c3d | |
parent | 40b7a5453ac961b1fdb094481afd4a6c1138bc46 (diff) | |
parent | a5f7f0fcc73e8796cc3927288df4bd7cfc36bb11 (diff) | |
download | python-prettytable-ptable-4676e41472725b03badcd9517f5aa2c2a41c1ebf.tar.gz |
Merge pull request #10 from Sewci0/tagfix
Added <tbody> and <thead> tags
-rw-r--r-- | prettytable/prettytable.py | 35 | ||||
-rw-r--r-- | tests/test_prettytable.py | 116 |
2 files changed, 85 insertions, 66 deletions
diff --git a/prettytable/prettytable.py b/prettytable/prettytable.py index 3b9bf27..1f9e3a1 100644 --- a/prettytable/prettytable.py +++ b/prettytable/prettytable.py @@ -1452,24 +1452,27 @@ class PrettyTable(object): # Headers if options["header"]: - lines.append(" <tr>") + lines.append(" <thead>") + lines.append(" <tr>") for field in self._field_names: if options["fields"] and field not in options["fields"]: continue - lines.append(" <th>%s</th>" % escape(field).replace("\n", linebreak)) - lines.append(" </tr>") + lines.append(" <th>%s</th>" % escape(field).replace("\n", linebreak)) + lines.append(" </tr>") + lines.append(" </thead>") # Data + lines.append(" <tbody>") rows = self._get_rows(options) formatted_rows = self._format_rows(rows, options) for row in formatted_rows: - lines.append(" <tr>") + lines.append(" <tr>") for field, datum in zip(self._field_names, row): if options["fields"] and field not in options["fields"]: continue - lines.append(" <td>%s</td>" % escape(datum).replace("\n", linebreak)) - lines.append(" </tr>") - + lines.append(" <td>%s</td>" % escape(datum).replace("\n", linebreak)) + lines.append(" </tr>") + lines.append(" </tbody>") lines.append("</table>") return self._unicode("\n").join(lines) @@ -1511,21 +1514,24 @@ class PrettyTable(object): if title: cols = len(options["fields"]) if options["fields"] else len(self.field_names) lines.append(" <tr>") - lines.append(" <td colspan=%d>%s</td>" % (cols, title)) + lines.append(" <td colspan=%d>%s</td>" % (cols, title)) lines.append(" </tr>") # Headers if options["header"]: - lines.append(" <tr>") + lines.append(" <thead>") + lines.append(" <tr>") for field in self._field_names: if options["fields"] and field not in options["fields"]: continue lines.append( - " <th style=\"padding-left: %dem; padding-right: %dem; text-align: center\">%s</th>" % ( + " <th style=\"padding-left: %dem; padding-right: %dem; text-align: center\">%s</th>" % ( lpad, rpad, escape(field).replace("\n", linebreak))) - lines.append(" </tr>") + lines.append(" </tr>") + lines.append(" </thead>") # Data + lines.append(" <tbody>") rows = self._get_rows(options) formatted_rows = self._format_rows(rows, options) aligns = [] @@ -1534,14 +1540,15 @@ class PrettyTable(object): aligns.append({"l": "left", "r": "right", "c": "center"}[self._align[field]]) valigns.append({"t": "top", "m": "middle", "b": "bottom"}[self._valign[field]]) for row in formatted_rows: - lines.append(" <tr>") + lines.append(" <tr>") for field, datum, align, valign in zip(self._field_names, row, aligns, valigns): if options["fields"] and field not in options["fields"]: continue lines.append( - " <td style=\"padding-left: %dem; padding-right: %dem; text-align: %s; vertical-align: %s\">%s</td>" % ( + " <td style=\"padding-left: %dem; padding-right: %dem; text-align: %s; vertical-align: %s\">%s</td>" % ( lpad, rpad, align, valign, escape(datum).replace("\n", linebreak))) - lines.append(" </tr>") + lines.append(" </tr>") + lines.append(" </tbody>") lines.append("</table>") return self._unicode("\n").join(lines) diff --git a/tests/test_prettytable.py b/tests/test_prettytable.py index 8d353a7..6d8c573 100644 --- a/tests/test_prettytable.py +++ b/tests/test_prettytable.py @@ -442,18 +442,22 @@ class BreakLineTests(unittest.TestCase): result = t.get_html_string(hrules=ALL) assert result.strip() == """ <table> - <tr> - <th>Field 1</th> - <th>Field 2</th> - </tr> - <tr> - <td>value 1</td> - <td>value2<br>second line</td> - </tr> - <tr> - <td>value 3</td> - <td>value4</td> - </tr> + <thead> + <tr> + <th>Field 1</th> + <th>Field 2</th> + </tr> + </thead> + <tbody> + <tr> + <td>value 1</td> + <td>value2<br>second line</td> + </tr> + <tr> + <td>value 3</td> + <td>value4</td> + </tr> + </tbody> </table> """.strip() @@ -514,26 +518,30 @@ class HtmlOutputTests(unittest.TestCase): result = t.get_html_string() assert result.strip() == """ <table> - <tr> - <th>Field 1</th> - <th>Field 2</th> - <th>Field 3</th> - </tr> - <tr> - <td>value 1</td> - <td>value2</td> - <td>value3</td> - </tr> - <tr> - <td>value 4</td> - <td>value5</td> - <td>value6</td> - </tr> - <tr> - <td>value 7</td> - <td>value8</td> - <td>value9</td> - </tr> + <thead> + <tr> + <th>Field 1</th> + <th>Field 2</th> + <th>Field 3</th> + </tr> + </thead> + <tbody> + <tr> + <td>value 1</td> + <td>value2</td> + <td>value3</td> + </tr> + <tr> + <td>value 4</td> + <td>value5</td> + <td>value6</td> + </tr> + <tr> + <td>value 7</td> + <td>value8</td> + <td>value9</td> + </tr> + </tbody> </table> """.strip() @@ -545,26 +553,30 @@ class HtmlOutputTests(unittest.TestCase): result = t.get_html_string(format=True) assert result.strip() == """ <table frame="box" rules="cols"> - <tr> - <th style="padding-left: 1em; padding-right: 1em; text-align: center">Field 1</th> - <th style="padding-left: 1em; padding-right: 1em; text-align: center">Field 2</th> - <th style="padding-left: 1em; padding-right: 1em; text-align: center">Field 3</th> - </tr> - <tr> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value 1</td> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value2</td> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value3</td> - </tr> - <tr> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value 4</td> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value5</td> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value6</td> - </tr> - <tr> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value 7</td> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value8</td> - <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value9</td> - </tr> + <thead> + <tr> + <th style="padding-left: 1em; padding-right: 1em; text-align: center">Field 1</th> + <th style="padding-left: 1em; padding-right: 1em; text-align: center">Field 2</th> + <th style="padding-left: 1em; padding-right: 1em; text-align: center">Field 3</th> + </tr> + </thead> + <tbody> + <tr> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value 1</td> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value2</td> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value3</td> + </tr> + <tr> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value 4</td> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value5</td> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value6</td> + </tr> + <tr> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value 7</td> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value8</td> + <td style="padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top">value9</td> + </tr> + </tbody> </table> """.strip() |