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

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

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

Powered by Google App Engine
This is Rietveld 408576698