Revision: 3323
Author: janne.t.harkonen
Date: Wed May 19 01:26:55 2010
Log: handle whole row comments, at least in setting table
http://code.google.com/p/robotframework/source/detail?r=3323
Modified:
/trunk/src/robot/parsing/populator.py
=======================================
--- /trunk/src/robot/parsing/populator.py Wed May 19 01:02:43 2010
+++ /trunk/src/robot/parsing/populator.py Wed May 19 01:26:55 2010
@@ -37,13 +37,23 @@
def __init__(self, datafile):
self._table = self._get_table(datafile)
self._populator = None
+ self._comments = []
def add(self, row):
+ if row.is_comment():
+ self._comments.append(row)
+ return
if not self._is_continuing(row):
self.populate()
self._populator = self._get_populator(row)
+ self._add_cached_comments_to(self._populator)
self._populator.add(row)
+ def _add_cached_comments_to(self, populator):
+ for crow in self._comments:
+ populator.add(crow)
+ self._comments = []
+
def populate(self):
if self._populator:
self._populator.populate()
@@ -255,7 +265,8 @@
class SettingPopulator(_PropertyPopulator):
def add(self, row):
- self._value.extend(row.tail)
+ if not row.is_comment():
+ self._value.extend(row.tail)
self._comments.extend(row.comments)
def populate(self):
@@ -379,6 +390,9 @@
def is_continuing(self):
return self.head == self._row_continuation_marker
+ def is_comment(self):
+ return not self.cells and self.comments
+
def _parse(self, row):
return self._purge_empty_cells(self._extract_data(row)), \
self._extract_comments(row)
@@ -387,6 +401,8 @@
return self._whitespace_regexp.sub(' ', value).strip()
def _extract_comments(self, row):
+ if not row:
+ return []
comments = []
for c in row:
if c.startswith('#') and not comments:
@@ -396,6 +412,8 @@
return comments
def _extract_data(self, row):
+ if not row:
+ return []
data = []
for c in row:
if c.startswith('#'):
@@ -410,4 +428,4 @@
return data
def __nonzero__(self):
- return self.cells != []
+ return bool(self.cells or self.comments)