From 7ecb7c78c17990b151c4e63d7f8422d302663d3d Mon Sep 17 00:00:00 2001
From: Sander Mathijs van Veen <smvv@kompiler.org>
Date: Mon, 27 Feb 2012 16:15:48 +0100
Subject: [PATCH] Print modifications done by hook_read_after() only once.

---
 src/parser.py | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/parser.py b/src/parser.py
index 8c771d6..5653b42 100644
--- a/src/parser.py
+++ b/src/parser.py
@@ -175,6 +175,9 @@ class Parser(BisonParser):
             # match: ab | abc | abcd (where left = "a")
             return '*'.join([left] + list(right))
 
+        if self.verbose:  # pragma: nocover
+            data_before = data
+
         # Iteratively replace all matches.
         while True:
             data_after = re.sub(pattern, preprocess_data, data)
@@ -182,13 +185,13 @@ class Parser(BisonParser):
             if data == data_after:
                 break
 
-            if self.verbose:  # pragma: nocover
-                print 'hook_read_after() modified the input data:'
-                print 'before:', data.replace('\n', '\\n')
-                print 'after :', data_after.replace('\n', '\\n')
-
             data = data_after
 
+        if self.verbose and data_before != data_after:  # pragma: nocover
+            print 'hook_read_after() modified the input data:'
+            print 'before:', repr(data_before)
+            print 'after :', repr(data_after)
+
         return data
 
     def hook_handler(self, target, option, names, values, retval):
-- 
GitLab