summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKane Blueriver <kxxoling@gmail.com>2016-11-13 23:32:10 +0800
committerGitHub <noreply@github.com>2016-11-13 23:32:10 +0800
commit4676e41472725b03badcd9517f5aa2c2a41c1ebf (patch)
treef72e62fbe4a8db284efdb0424fd738e1c64c9c3d
parent40b7a5453ac961b1fdb094481afd4a6c1138bc46 (diff)
parenta5f7f0fcc73e8796cc3927288df4bd7cfc36bb11 (diff)
downloadpython-prettytable-ptable-4676e41472725b03badcd9517f5aa2c2a41c1ebf.tar.gz
Merge pull request #10 from Sewci0/tagfix
Added <tbody> and <thead> tags
-rw-r--r--prettytable/prettytable.py35
-rw-r--r--tests/test_prettytable.py116
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()