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)

Reply via email to