xref: /aosp_15_r20/external/toolchain-utils/cros_utils/html_tools.py (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
1# -*- coding: utf-8 -*-
2# Copyright 2019 The ChromiumOS Authors
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Utilities for generating html."""
7
8
9def GetPageHeader(page_title):
10    return (
11        """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
12"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
13<html>
14<head>
15<style type="text/css">
16table
17{
18border-collapse:collapse;
19}
20table, td, th
21{
22border:1px solid black;
23}
24</style>
25<script type="text/javascript">
26function displayRow(id){
27  var row = document.getElementById("group_"+id);
28  if (row.style.display == '')  row.style.display = 'none';
29    else row.style.display = '';
30  }
31</script>
32<title>%s</title>
33</head>
34<body>
35
36"""
37        % page_title
38    )
39
40
41def GetListHeader():
42    return "<ul>"
43
44
45def GetListItem(text):
46    return "<li>%s</li>" % text
47
48
49def GetListFooter():
50    return "</ul>"
51
52
53def GetList(items):
54    return "<ul>%s</ul>" % "".join(["<li>%s</li>" % item for item in items])
55
56
57def GetParagraph(text):
58    return "<p>%s</p>" % text
59
60
61def GetFooter():
62    return "</body>\n</html>"
63
64
65def GetHeader(text, h=1):
66    return "<h%s>%s</h%s>" % (h, text, h)
67
68
69def GetTableHeader(headers):
70    row = "".join(["<th>%s</th>" % header for header in headers])
71    return "<table><tr>%s</tr>" % row
72
73
74def GetTableFooter():
75    return "</table>"
76
77
78def FormatLineBreaks(text):
79    return text.replace("\n", "<br/>")
80
81
82def GetTableCell(text):
83    return "<td>%s</td>" % FormatLineBreaks(str(text))
84
85
86def GetTableRow(columns):
87    return "<tr>%s</tr>" % "\n".join(
88        [GetTableCell(column) for column in columns]
89    )
90
91
92def GetTable(headers, rows):
93    table = [GetTableHeader(headers)]
94    table.extend([GetTableRow(row) for row in rows])
95    table.append(GetTableFooter())
96    return "\n".join(table)
97
98
99def GetLink(link, text):
100    return "<a href='%s'>%s</a>" % (link, text)
101