From 1f1c3e3eebf7a089ec04d60d4e25c33ac9dc0f87 Mon Sep 17 00:00:00 2001 From: Andi Albrecht Date: Sat, 6 Apr 2013 10:43:28 +0200 Subject: Detect runaway indentations and go back to first column instead of going crazy. Even though the resulting statement is not correctly formatted, it's much more usable than before. --- sqlparse/filters.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'sqlparse') diff --git a/sqlparse/filters.py b/sqlparse/filters.py index e238f69..fdb32ac 100644 --- a/sqlparse/filters.py +++ b/sqlparse/filters.py @@ -261,7 +261,13 @@ class ReindentFilter: def nl(self): # TODO: newline character should be configurable - ws = '\n' + (self.char * ((self.indent * self.width) + self.offset)) + space = (self.char * ((self.indent * self.width) + self.offset)) + # Detect runaway indenting due to parsing errors + if len(space) > 200: + # something seems to be wrong, flip back + self.indent = self.offset = 0 + space = (self.char * ((self.indent * self.width) + self.offset)) + ws = '\n' + space return sql.Token(T.Whitespace, ws) def _split_kwds(self, tlist): -- cgit v1.2.1