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

Side by Side Diff: third_party/logilab/logilab/common/ureports/docbook_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 six.moves import range
22
23 from logilab.common.ureports import HTMLWriter
24
25 class DocbookWriter(HTMLWriter):
26 """format layouts as HTML"""
27
28 def begin_format(self, layout):
29 """begin to format a layout"""
30 super(HTMLWriter, self).begin_format(layout)
31 if self.snippet is None:
32 self.writeln('<?xml version="1.0" encoding="ISO-8859-1"?>')
33 self.writeln("""
34 <book xmlns:xi='http://www.w3.org/2001/XInclude'
35 lang='fr'>
36 """)
37
38 def end_format(self, layout):
39 """finished to format a layout"""
40 if self.snippet is None:
41 self.writeln('</book>')
42
43 def visit_section(self, layout):
44 """display a section (using <chapter> (level 0) or <section>)"""
45 if self.section == 0:
46 tag = "chapter"
47 else:
48 tag = "section"
49 self.section += 1
50 self.writeln(self._indent('<%s%s>' % (tag, self.handle_attrs(layout))))
51 self.format_children(layout)
52 self.writeln(self._indent('</%s>'% tag))
53 self.section -= 1
54
55 def visit_title(self, layout):
56 """display a title using <title>"""
57 self.write(self._indent(' <title%s>' % self.handle_attrs(layout)))
58 self.format_children(layout)
59 self.writeln('</title>')
60
61 def visit_table(self, layout):
62 """display a table as html"""
63 self.writeln(self._indent(' <table%s><title>%s</title>' \
64 % (self.handle_attrs(layout), layout.title)))
65 self.writeln(self._indent(' <tgroup cols="%s">'% layout.cols))
66 for i in range(layout.cols):
67 self.writeln(self._indent(' <colspec colname="c%s" colwidth="1* "/>' % i))
68
69 table_content = self.get_table_content(layout)
70 # write headers
71 if layout.cheaders:
72 self.writeln(self._indent(' <thead>'))
73 self._write_row(table_content[0])
74 self.writeln(self._indent(' </thead>'))
75 table_content = table_content[1:]
76 elif layout.rcheaders:
77 self.writeln(self._indent(' <thead>'))
78 self._write_row(table_content[-1])
79 self.writeln(self._indent(' </thead>'))
80 table_content = table_content[:-1]
81 # write body
82 self.writeln(self._indent(' <tbody>'))
83 for i in range(len(table_content)):
84 row = table_content[i]
85 self.writeln(self._indent(' <row>'))
86 for j in range(len(row)):
87 cell = row[j] or '&#160;'
88 self.writeln(self._indent(' <entry>%s</entry>' % cell))
89 self.writeln(self._indent(' </row>'))
90 self.writeln(self._indent(' </tbody>'))
91 self.writeln(self._indent(' </tgroup>'))
92 self.writeln(self._indent(' </table>'))
93
94 def _write_row(self, row):
95 """write content of row (using <row> <entry>)"""
96 self.writeln(' <row>')
97 for j in range(len(row)):
98 cell = row[j] or '&#160;'
99 self.writeln(' <entry>%s</entry>' % cell)
100 self.writeln(self._indent(' </row>'))
101
102 def visit_list(self, layout):
103 """display a list (using <itemizedlist>)"""
104 self.writeln(self._indent(' <itemizedlist%s>' % self.handle_attrs(layou t)))
105 for row in list(self.compute_content(layout)):
106 self.writeln(' <listitem><para>%s</para></listitem>' % row)
107 self.writeln(self._indent(' </itemizedlist>'))
108
109 def visit_paragraph(self, layout):
110 """display links (using <para>)"""
111 self.write(self._indent(' <para>'))
112 self.format_children(layout)
113 self.writeln('</para>')
114
115 def visit_span(self, layout):
116 """display links (using <p>)"""
117 #TODO: translate in docbook
118 self.write('<literal %s>' % self.handle_attrs(layout))
119 self.format_children(layout)
120 self.write('</literal>')
121
122 def visit_link(self, layout):
123 """display links (using <ulink>)"""
124 self.write('<ulink url="%s"%s>%s</ulink>' % (layout.url,
125 self.handle_attrs(layout),
126 layout.label))
127
128 def visit_verbatimtext(self, layout):
129 """display verbatim text (using <programlisting>)"""
130 self.writeln(self._indent(' <programlisting>'))
131 self.write(layout.data.replace('&', '&amp;').replace('<', '&lt;'))
132 self.writeln(self._indent(' </programlisting>'))
133
134 def visit_text(self, layout):
135 """add some text"""
136 self.write(layout.data.replace('&', '&amp;').replace('<', '&lt;'))
137
138 def _indent(self, string):
139 """correctly indent string according to section"""
140 return ' ' * 2*(self.section) + string
OLDNEW
« no previous file with comments | « third_party/logilab/logilab/common/ureports/__init__.py ('k') | third_party/logilab/logilab/common/ureports/html_writer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698