From f57736e77a40aba1278d506e05655b03b0db8596 Mon Sep 17 00:00:00 2001
From: Guido van Rossum <guido@python.org>
Date: Fri, 19 Jun 1998 21:39:27 +0000
Subject: Translated to use re instead of regex.  Also replaced one use of
 L.append(a,b,c,d) with the correct L.append((a,b,c,d)).

---
 Tools/scripts/pindent.py | 78 ++++++++++++++++++++++++++++--------------------
 1 file changed, 45 insertions(+), 33 deletions(-)

diff --git a/Tools/scripts/pindent.py b/Tools/scripts/pindent.py
index 1845ed8..4c8e71d 100755
--- a/Tools/scripts/pindent.py
+++ b/Tools/scripts/pindent.py
@@ -77,7 +77,7 @@ STEPSIZE = 8
 TABSIZE = 8
 
 import os
-import regex
+import re
 import string
 import sys
 
@@ -100,15 +100,15 @@ class PythonIndenter:
 		self.tabsize = tabsize
 		self.lineno = 0
 		self.write = fpo.write
-		self.kwprog = regex.symcomp(
-			'^[ \t]*\(<kw>[a-z]+\)'
-			'\([ \t]+\(<id>[a-zA-Z_][a-zA-Z0-9_]*\)\)?'
-			'[^a-zA-Z0-9_]')
-		self.endprog = regex.symcomp(
-			'^[ \t]*#?[ \t]*end[ \t]+\(<kw>[a-z]+\)'
-			'\([ \t]+\(<id>[a-zA-Z_][a-zA-Z0-9_]*\)\)?'
-			'[^a-zA-Z0-9_]')
-		self.wsprog = regex.compile('^[ \t]*')
+		self.kwprog = re.compile(
+			r'^\s*(?P<kw>[a-z]+)'
+			r'(\s+(?P<id>[a-zA-Z_]\w*))?'
+			r'[^\w]')
+		self.endprog = re.compile(
+			r'^\s*#?\s*end\s+(?P<kw>[a-z]+)'
+			r'(\s+(?P<id>[a-zA-Z_]\w*))?'
+			r'[^\w]')
+		self.wsprog = re.compile(r'^[ \t]*')
 	# end def __init__
 
 	def readline(self):
@@ -142,7 +142,10 @@ class PythonIndenter:
 			return
 		# end if
 		tabs, spaces = divmod(indent*self.indentsize, self.tabsize)
-		i = max(0, self.wsprog.match(line))
+		i = 0
+		m = self.wsprog.match(line)
+		if m: i = m.end()
+		# end if
 		self.write('\t'*tabs + ' '*spaces + line[i:])
 	# end def putline
 
@@ -152,9 +155,10 @@ class PythonIndenter:
 			line = self.getline()
 			if not line: break	# EOF
 			# end if
-			if self.endprog.match(line) >= 0:
+			m = self.endprog.match(line)
+			if m:
 				kw = 'end'
-				kw2 = self.endprog.group('kw')
+				kw2 = m.group('kw')
 				if not stack:
 					self.error('unexpected end')
 				elif stack[-1][0] != kw2:
@@ -164,8 +168,9 @@ class PythonIndenter:
 				self.putline(line, len(stack))
 				continue
 			# end if
-			if self.kwprog.match(line) >= 0:
-				kw = self.kwprog.group('kw')
+			m = self.kwprog.match(line)
+			if m:
+				kw = m.group('kw')
 				if kw in start:
 					self.putline(line, len(stack))
 					stack.append((kw, kw))
@@ -195,26 +200,33 @@ class PythonIndenter:
 		current, firstkw, lastkw, topid = 0, '', '', ''
 		while 1:
 			line = self.getline()
-			i = max(0, self.wsprog.match(line))
-			if self.endprog.match(line) >= 0:
+			i = 0
+			m = self.wsprog.match(line)
+			if m: i = m.end()
+			# end if
+			m = self.endprog.match(line)
+			if m:
 				thiskw = 'end'
-				endkw = self.endprog.group('kw')
-				thisid = self.endprog.group('id')
-			elif self.kwprog.match(line) >= 0:
-				thiskw = self.kwprog.group('kw')
-				if not next.has_key(thiskw):
-					thiskw = ''
-				# end if
-				if thiskw in ('def', 'class'):
-					thisid = self.kwprog.group('id')
+				endkw = m.group('kw')
+				thisid = m.group('id')
+			else:
+				m = self.kwprog.match(line)
+				if m:
+					thiskw = m.group('kw')
+					if not next.has_key(thiskw):
+						thiskw = ''
+					# end if
+					if thiskw in ('def', 'class'):
+						thisid = m.group('id')
+					else:
+						thisid = ''
+					# end if
+				elif line[i:i+1] in ('\n', '#'):
+					todo.append(line)
+					continue
 				else:
-					thisid = ''
+					thiskw = ''
 				# end if
-			elif line[i:i+1] in ('\n', '#'):
-				todo.append(line)
-				continue
-			else:
-				thiskw = ''
 			# end if
 			indent = len(string.expandtabs(line[:i], self.tabsize))
 			while indent < current:
@@ -249,7 +261,7 @@ class PythonIndenter:
 				# end if
 			# end if
 			if indent > current:
-				stack.append(current, firstkw, lastkw, topid)
+				stack.append((current, firstkw, lastkw, topid))
 				if thiskw and thiskw not in start:
 					# error
 					thiskw = ''
-- 
cgit v0.12

