diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2016-08-03 09:58:26 +0200 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2016-08-08 20:36:48 +0200 |
commit | 79ca113fb294b6b5d478f9186f8a3000b13fd30a (patch) | |
tree | 4efeee837ac48ba73b9c62730618226e735762a7 | |
parent | 5d4baf530af8ca843dcfe310af3bd34d4cf7c3ad (diff) |
grc: add error messages iterator
-rw-r--r-- | grc/core/Element.py | 19 |
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): """ |