summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Koslowski <koslowski@kit.edu>2016-08-03 09:58:26 +0200
committerSebastian Koslowski <koslowski@kit.edu>2016-08-08 20:36:48 +0200
commit79ca113fb294b6b5d478f9186f8a3000b13fd30a (patch)
tree4efeee837ac48ba73b9c62730618226e735762a7
parent5d4baf530af8ca843dcfe310af3bd34d4cf7c3ad (diff)
grc: add error messages iterator
-rw-r--r--grc/core/Element.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/grc/core/Element.py b/grc/core/Element.py
index 32afabbed7..86e0746655 100644
--- a/grc/core/Element.py
+++ b/grc/core/Element.py
@@ -66,7 +66,9 @@ class Element(object):
Returns:
true when the element is enabled and has no error messages or is bypassed
"""
- return (not self.get_error_messages() or not self.enabled) or self.get_bypassed()
+ if not self.enabled or self.get_bypassed():
+ return True
+ return not next(self.iter_error_messages(), False)
def add_error_message(self, msg):
"""
@@ -86,13 +88,20 @@ class Element(object):
Returns:
a list of error message strings
"""
- error_messages = list(self._error_messages) # Make a copy
+ return [msg if elem is self else "{}:\n\t{}".format(elem, msg.replace("\n", "\n\t"))
+ for elem, msg in self.iter_error_messages()]
+
+ def iter_error_messages(self):
+ """
+ Iterate over error messages. Yields tuples of (element, message)
+ """
+ for msg in self._error_messages:
+ yield self, msg
for child in self.get_children():
if not child.enabled or child.get_bypassed():
continue
- for msg in child.get_error_messages():
- error_messages.append("{}:\n\t{}".format(child, msg.replace("\n", "\n\t")))
- return error_messages
+ for element_msg in child.iter_error_messages():
+ yield element_msg
def rewrite(self):
"""