Author: pekka.klarck
Date: Sun Apr 5 05:17:34 2009
New Revision: 1669
Modified:
trunk/src/robot/serializing/serializer.py
trunk/src/robot/utils/htmlwriter.py
Log:
Renamed HtmlWriter's starts -> start_many and ends -> end_many (these
methods got bad names when renamed start/end_element -> start/end). Also
some more cleanup.
Modified: trunk/src/robot/serializing/serializer.py
==============================================================================
--- trunk/src/robot/serializing/serializer.py (original)
+++ trunk/src/robot/serializing/serializer.py Sun Apr 5 05:17:34 2009
@@ -75,18 +75,16 @@
pass_attrs, fail_attrs = self._get_graph_attrs(stat)
self._writer.element('b', None, pass_attrs)
self._writer.element('b', None, fail_attrs)
- self._writer.ends(['div', 'td', 'tr'])
+ self._writer.end_many(['div', 'td', 'tr'])
def _get_graph_attrs(self, stat):
# See utils.percents_to_widths to understand why different percent
and
# width values are needed
percents = utils.calc_percents(stat.passed, stat.failed)
widths = utils.percents_to_widths(*percents)
- pass_attrs = {'class': 'pass_bar',
- 'title': '%.1f%%' % percents[0],
+ pass_attrs = {'class': 'pass_bar', 'title': '%.1f%%' % percents[0],
'style': 'width: %.2f%%;' % widths[0]}
- fail_attrs = {'class': 'fail_bar',
- 'title': '%.1f%%' % percents[1],
+ fail_attrs = {'class': 'fail_bar', 'title': '%.1f%%' % percents[1],
'style': 'width: %.2f%%;' % widths[1]}
return pass_attrs, fail_attrs
@@ -113,7 +111,7 @@
self._writer.start('div', {'class': 'graph'})
self._writer.element('b', None, {'class': 'no_tags_bar',
'style': 'width: 100%;'})
- self._writer.ends(['div', 'td', 'tr'])
+ self._writer.end_many(['div', 'td', 'tr'])
def _stat_name(self, stat):
self._writer.start('div', {'class': 'stat_name'}, newline=False)
@@ -246,7 +244,7 @@
suite.id = self._idgen.get_id('suite')
self._writer.start('table', {'class': 'suite', 'id': suite.id})
self._write_suite_or_test_name(suite, 'suite')
- self._writer.starts(['tr', 'td'])
+ self._writer.start_many(['tr', 'td'])
self._writer.start('div', {'class': 'indent',
'style': self._get_display_style(suite),
'id': '%s_children' % suite.id})
@@ -254,21 +252,21 @@
self._suite_level += 1
def end_suite(self, suite):
- self._writer.ends(['div','td','tr','table'])
+ self._writer.end_many(['div','td','tr','table'])
self._suite_level -= 1
def start_test(self, test):
test.id = self._idgen.get_id('test')
self._writer.start('table', {'class': 'test', 'id': test.id})
self._write_suite_or_test_name(test, 'test')
- self._writer.starts(['tr', 'td'])
+ self._writer.start_many(['tr', 'td'])
self._writer.start('div', {'class': 'indent',
'style': self._get_display_style(test),
'id': '%s_children' % test.id})
self._write_test_metadata(test)
def end_test(self, test):
- self._writer.ends(['div','td','tr','table'])
+ self._writer.end_many(['div','td','tr','table'])
def start_keyword(self, kw):
kw.id = self._idgen.get_id('kw')
@@ -282,7 +280,7 @@
self._write_keyword_info(kw)
def end_keyword(self, kw):
- self._writer.ends(['div','td','tr','table'])
+ self._writer.end_many(['div','td','tr','table'])
def message(self, msg):
self._writer.start('table', {'class': 'messages'})
@@ -293,10 +291,10 @@
{'class': '%s level' % msg.level.lower()})
self._writer.element('td', msg.message, {'class': 'msg'},
escape=not msg.html)
- self._writer.ends(['tr', 'table'])
+ self._writer.end_many(['tr', 'table'])
def _write_suite_or_test_name(self, item, type_):
- self._writer.starts(['tr', 'td'])
+ self._writer.start_many(['tr', 'td'])
self._write_expand_all(item)
self._write_folding_button(item)
label = type_ == 'suite' and 'TEST SUITE: '
or 'TEST CASE: '
@@ -305,7 +303,7 @@
name = item.get_long_name(split_level=self._split_level)
self._writer.element('a', item.name, {'name': '%s_%s' % (type_,
name),
'class': 'name', 'title':
name})
- self._writer.ends(['td', 'tr'])
+ self._writer.end_many(['td', 'tr'])
def _write_expand_all(self, item):
# Overridden by testdoc.py tool.
@@ -331,7 +329,7 @@
self._writer.element('span', kw_type.upper()+': ', status)
self._writer.element('span', kw.name+' ', {'class': 'name'})
self._writer.element('span', ', '.join(kw.args),
{'class': 'arg'})
- self._writer.ends(['td', 'tr'])
+ self._writer.end_many(['td', 'tr'])
def _write_keyword_info(self, kw):
self._writer.start('table', {'class': 'metadata'})
@@ -463,7 +461,7 @@
self._write_split_suite_name(item)
def _write_split_suite_name(self, suite):
- self._writer.starts(['tr', 'td'])
+ self._writer.start_many(['tr', 'td'])
self._write_folding_button(suite)
self._writer.element('span', 'TEST SUITE: ',
{'class': suite.status.lower()}, escape=False)
@@ -472,7 +470,7 @@
{'name': 'suite_%s' % (suite.mediumname),
'href': link, 'class': 'splitname',
'title': suite.longname})
- self._writer.ends(['td', 'tr'])
+ self._writer.end_many(['td', 'tr'])
def _write_split_suite_details_link(self):
if self._suite_level == self._split_level:
Modified: trunk/src/robot/utils/htmlwriter.py
==============================================================================
--- trunk/src/robot/utils/htmlwriter.py (original)
+++ trunk/src/robot/utils/htmlwriter.py Sun Apr 5 05:17:34 2009
@@ -12,9 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-
-from types import UnicodeType
-
from abstractxmlwriter import AbstractXmlWriter
from htmlutils import html_escape, html_attr_escape
from robottypes import unic
@@ -39,7 +36,7 @@
self._start(name, attrs, close=True, newline=newline)
def content(self, content=None, escape=True):
- if content is not None:
+ if content:
if escape:
content = self._escape_content(content)
self._write(content)
@@ -51,42 +48,38 @@
self._write(elem)
def element(self, name, content=None, attrs=None, escape=True,
- newline=True):
+ newline=True):
self.start(name, attrs, newline=False)
self.content(content, escape)
self.end(name, newline)
- def starts(self, names, newline=True):
+ def start_many(self, names, newline=True):
for name in names:
self.start(name, newline=newline)
- def ends(self, names, newline=True):
+ def end_many(self, names, newline=True):
for name in names:
self.end(name, newline)
def _start(self, name, attrs, close=False, newline=True):
elem = '<%s' % name
- attrs = self._process_attrs(attrs)
- if attrs:
- elem += ' ' + attrs
+ elem = self._add_attrs(elem, attrs)
elem += (close and ' />' or '>')
if newline:
elem += '\n'
self._write(elem)
- def _process_attrs(self, attrs):
- if attrs is None:
- return ''
+ def _add_attrs(self, elem, attrs):
+ if not attrs:
+ return elem
attrs = attrs.items()
attrs.sort()
attrs = [ '%s="%s"' % (name, html_attr_escape(value))
for name, value in attrs ]
- return ' '.join(attrs)
+ return '%s %s' % (elem, ' '.join(attrs))
def _escape_content(self, content):
- if type(content) is not UnicodeType:
- content = unic(content)
- return html_escape(content)
+ return html_escape(unic(content))
def _write(self, text):
self.output.write(text.encode('UTF-8'))