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