Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: third_party/logilab/logilab/common/ureports/html_writer.py

Issue 1920403002: [content/test/gpu] Run pylint check of gpu tests in unittest instead of PRESUBMIT (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update path to LICENSE.txt of logilab/README.chromium Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3 #
4 # This file is part of logilab-common.
5 #
6 # logilab-common is free software: you can redistribute it and/or modify it unde r
7 # the terms of the GNU Lesser General Public License as published by the Free
8 # Software Foundation, either version 2.1 of the License, or (at your option) an y
9 # later version.
10 #
11 # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14 # details.
15 #
16 # You should have received a copy of the GNU Lesser General Public License along
17 # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18 """HTML formatting drivers for ureports"""
19 __docformat__ = "restructuredtext en"
20
21 from cgi import escape
22
23 from six.moves import range
24
25 from logilab.common.ureports import BaseWriter
26
27
28 class HTMLWriter(BaseWriter):
29 """format layouts as HTML"""
30
31 def __init__(self, snippet=None):
32 super(HTMLWriter, self).__init__()
33 self.snippet = snippet
34
35 def handle_attrs(self, layout):
36 """get an attribute string from layout member attributes"""
37 attrs = u''
38 klass = getattr(layout, 'klass', None)
39 if klass:
40 attrs += u' class="%s"' % klass
41 nid = getattr(layout, 'id', None)
42 if nid:
43 attrs += u' id="%s"' % nid
44 return attrs
45
46 def begin_format(self, layout):
47 """begin to format a layout"""
48 super(HTMLWriter, self).begin_format(layout)
49 if self.snippet is None:
50 self.writeln(u'<html>')
51 self.writeln(u'<body>')
52
53 def end_format(self, layout):
54 """finished to format a layout"""
55 if self.snippet is None:
56 self.writeln(u'</body>')
57 self.writeln(u'</html>')
58
59
60 def visit_section(self, layout):
61 """display a section as html, using div + h[section level]"""
62 self.section += 1
63 self.writeln(u'<div%s>' % self.handle_attrs(layout))
64 self.format_children(layout)
65 self.writeln(u'</div>')
66 self.section -= 1
67
68 def visit_title(self, layout):
69 """display a title using <hX>"""
70 self.write(u'<h%s%s>' % (self.section, self.handle_attrs(layout)))
71 self.format_children(layout)
72 self.writeln(u'</h%s>' % self.section)
73
74 def visit_table(self, layout):
75 """display a table as html"""
76 self.writeln(u'<table%s>' % self.handle_attrs(layout))
77 table_content = self.get_table_content(layout)
78 for i in range(len(table_content)):
79 row = table_content[i]
80 if i == 0 and layout.rheaders:
81 self.writeln(u'<tr class="header">')
82 elif i+1 == len(table_content) and layout.rrheaders:
83 self.writeln(u'<tr class="header">')
84 else:
85 self.writeln(u'<tr class="%s">' % (i%2 and 'even' or 'odd'))
86 for j in range(len(row)):
87 cell = row[j] or u'&#160;'
88 if (layout.rheaders and i == 0) or \
89 (layout.cheaders and j == 0) or \
90 (layout.rrheaders and i+1 == len(table_content)) or \
91 (layout.rcheaders and j+1 == len(row)):
92 self.writeln(u'<th>%s</th>' % cell)
93 else:
94 self.writeln(u'<td>%s</td>' % cell)
95 self.writeln(u'</tr>')
96 self.writeln(u'</table>')
97
98 def visit_list(self, layout):
99 """display a list as html"""
100 self.writeln(u'<ul%s>' % self.handle_attrs(layout))
101 for row in list(self.compute_content(layout)):
102 self.writeln(u'<li>%s</li>' % row)
103 self.writeln(u'</ul>')
104
105 def visit_paragraph(self, layout):
106 """display links (using <p>)"""
107 self.write(u'<p>')
108 self.format_children(layout)
109 self.write(u'</p>')
110
111 def visit_span(self, layout):
112 """display links (using <p>)"""
113 self.write(u'<span%s>' % self.handle_attrs(layout))
114 self.format_children(layout)
115 self.write(u'</span>')
116
117 def visit_link(self, layout):
118 """display links (using <a>)"""
119 self.write(u' <a href="%s"%s>%s</a>' % (layout.url,
120 self.handle_attrs(layout),
121 layout.label))
122 def visit_verbatimtext(self, layout):
123 """display verbatim text (using <pre>)"""
124 self.write(u'<pre>')
125 self.write(layout.data.replace(u'&', u'&amp;').replace(u'<', u'&lt;'))
126 self.write(u'</pre>')
127
128 def visit_text(self, layout):
129 """add some text"""
130 data = layout.data
131 if layout.escaped:
132 data = data.replace(u'&', u'&amp;').replace(u'<', u'&lt;')
133 self.write(data)
OLDNEW
« no previous file with comments | « third_party/logilab/logilab/common/ureports/docbook_writer.py ('k') | third_party/logilab/logilab/common/ureports/nodes.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698