Modified:
branches/groups/src/esmre.py
Log:
Refactor: extract state for skipping braces.
Modified: branches/groups/src/esmre.py
==============================================================================
--- branches/groups/src/esmre.py (original)
+++ branches/groups/src/esmre.py Wed Oct 1 07:06:30 2008
@@ -45,12 +45,23 @@
return self
+class InBracesState(object):
+ def __init__(self, parent_state):
+ self.parent_state = parent_state
+
+ def process_byte(self, ch):
+ if ch == "}":
+ return self.parent_state
+
+ else:
+ return self
+
+
class RootState(object):
def __init__(self):
self.hints = [""]
self.to_append = ""
self.group_level = 0
- self.in_braces = False
def process_byte(self, ch):
next_state = self
@@ -71,13 +82,6 @@
else:
pass
- elif self.in_braces:
- if ch == "}":
- self.in_braces = False
-
- else:
- pass
-
else:
if ch in "?*":
self.to_append = ""
@@ -112,7 +116,7 @@
self.to_append = ""
self.hints.append("")
- self.in_braces = True
+ next_state = InBracesState(self)
elif ch == "\\":
if self.to_append: