Author: pekka.klarck
Date: Sun Apr 5 16:10:25 2009
New Revision: 1680
Modified:
trunk/src/robot/serializing/statserializers.py
Log:
refactred. should have no functional changes.
Modified: trunk/src/robot/serializing/statserializers.py
==============================================================================
--- trunk/src/robot/serializing/statserializers.py (original)
+++ trunk/src/robot/serializing/statserializers.py Sun Apr 5 16:10:25 2009
@@ -44,21 +44,50 @@
end_tag_stats = end_suite_stats = end_total_stats
def total_stat(self, stat):
- self._stat(stat)
+ elem = self._start_stat_name(stat)
+ self._write_stat_name(stat)
+ self._end_stat_name(elem)
+ self._write_numbers_and_graph(stat)
def suite_stat(self, stat):
- self._stat(stat)
+ elem = self._start_stat_name(stat)
+ self._write_stat_name(stat)
+ self._end_stat_name(elem)
+ self._write_numbers_and_graph(stat)
def tag_stat(self, stat):
- self._stat(stat)
+ elem = self._start_stat_name(stat)
+ self._write_stat_name(stat)
+ self._end_tag_stat_name(elem, stat)
+ self._write_numbers_and_graph(stat)
- def _stat(self, stat):
+ def _start_stat_name(self, stat):
self._writer.start('tr')
self._writer.start('td', {'class': 'col_stat_name'})
- self._stat_name(stat)
- if stat.type == 'tag':
- self._tag_stat_link(stat)
+ self._writer.start('div', {'class': 'stat_name'}, newline=False)
+ elem, attrs = self._get_element_name_and_attrs(stat)
+ doc = self._get_doc(stat)
+ if doc:
+ attrs['title'] = doc
+ self._writer.start(elem, attrs, newline=False)
+ return elem
+
+ def _write_stat_name(self, stat):
+ self._writer.content(self._get_name(stat))
+
+ def _end_stat_name(self, elem):
+ self._writer.end(elem, newline=False)
+ self._writer.end('div')
self._writer.end('td')
+
+ def _end_tag_stat_name(self, elem, stat):
+ self._writer.end(elem, newline=False)
+ self._write_tag_criticality(stat)
+ self._writer.end('div')
+ self._write_tag_stat_link(stat)
+ self._writer.end('td')
+
+ def _write_numbers_and_graph(self, stat):
self._writer.element('td', stat.passed + stat.failed,
{'class': 'col_stat'})
self._writer.element('td', stat.passed, {'class': 'col_stat'})
@@ -105,37 +134,19 @@
'style': 'width: 100%;'})
self._writer.end_many(['div', 'td', 'tr'])
- def _stat_name(self, stat):
- self._writer.start('div', {'class': 'stat_name'}, newline=False)
- elem = self._get_element_name(stat)
- attrs = elem == 'a' and self._get_link_attributes(stat) or {}
- doc = self._get_doc_attribute(stat)
- if doc:
- attrs['title'] = doc
- name = self._get_name_attribute(stat)
- self._writer.element(elem, name, attrs, newline=False)
- self._write_criticality(stat)
- self._writer.end('div')
-
- def _get_doc_attribute(self, stat):
+ def _get_doc(self, stat):
return stat.get_doc()
- def _get_name_attribute(self, stat):
+ def _get_name(self, stat):
return stat.get_name()
-
- def _get_link_attributes(self, stat):
- raise NotImplementedError
-
- def _get_element_name(self, stat):
- raise NotImplementedError
- def _write_criticality(self, stat):
- if stat.type == 'tag' and stat.critical:
+ def _write_tag_criticality(self, stat):
+ if stat.critical:
self._writer.content(' (critical)')
- if stat.type == 'tag' and stat.non_critical:
+ if stat.non_critical:
self._writer.content(' (non-critical)')
- def _tag_stat_link(self, stat):
+ def _write_tag_stat_link(self, stat):
self._writer.start('div', {'class': 'tag_links'})
for link, title in stat.links:
self._writer.start('span', newline=False)
@@ -152,8 +163,10 @@
_StatSerializer.__init__(self, output)
self._split_level = split_level
- def _get_element_name(self, stat):
- return stat.type == 'suite' and 'a' or 'span'
+ def _get_element_name_and_attrs(self, stat):
+ if stat.type == 'suite':
+ return 'a', self._get_link_attributes(stat)
+ return 'span', {}
def _get_link_attributes(self, stat):
target = '%s_%s' % (stat.type, stat.get_link(self._split_level))
@@ -163,10 +176,10 @@
class LogStatSerializer(_BaseLogStatSerializer):
- def _get_doc_attribute(self, stat):
+ def _get_doc(self, stat):
return stat.get_doc(self._split_level)
- def _get_name_attribute(self, stat):
+ def _get_name(self, stat):
return stat.get_name(self._split_level)
@@ -177,23 +190,21 @@
self._namegen =
utils.FileNameGenerator(os.path.basename(output.name))
def _get_link_attributes(self, stat):
- if not stat.should_link_to_sub_log(self._split_level):
- return _BaseLogStatSerializer._get_link_attributes(self, stat)
- self._link_target = self._namegen.get_name()
- return {'href': '%s#%s_%s' % (self._link_target, stat.type,
- stat.get_link(self._split_level))}
+ if stat.should_link_to_sub_log(self._split_level):
+ return {'href': '%s#%s_%s' % (self._namegen.get_name(),
stat.type,
+
stat.get_link(self._split_level))}
+ return _BaseLogStatSerializer._get_link_attributes(self, stat)
class ReportStatSerializer(_StatSerializer):
- def _get_element_name(self, stat):
- return stat.type in ['suite', 'tag'] and 'a' or 'span'
-
- def _get_link_attributes(self, stat):
- return {'href': '#%s_%s' % (stat.type, stat.get_link())}
+ def _get_element_name_and_attrs(self, stat):
+ if stat.type in ['suite', 'tag']:
+ return 'a', {'href': '#%s_%s' % (stat.type, stat.get_link())}
+ return 'span', {}
class SummaryStatSerializer(_StatSerializer):
- def _get_element_name(self, stat):
- return 'span'
+ def _get_element_name_and_attrs(self, stat):
+ return 'span', {}