You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/06/03 18:22:15 UTC

svn commit: r951054 - /subversion/trunk/build/transform_sql.py

Author: hwright
Date: Thu Jun  3 16:22:15 2010
New Revision: 951054

URL: http://svn.apache.org/viewvc?rev=951054&view=rev
Log:
Make the sql transformer a bit more pythonic in the way that it handles the
various directives.

* build/transform_sql.py
  (_sub_format, _sub_statement, _sub_include, _sub_define):
    New.
  (__init__): Initialize the directives dictionary.
  (process_file): Use the directives dict to iterate over the various sqlite
    directives which we support.

Modified:
    subversion/trunk/build/transform_sql.py

Modified: subversion/trunk/build/transform_sql.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/transform_sql.py?rev=951054&r1=951053&r2=951054&view=diff
==============================================================================
--- subversion/trunk/build/transform_sql.py (original)
+++ subversion/trunk/build/transform_sql.py Thu Jun  3 16:22:15 2010
@@ -53,6 +53,35 @@ class Processor(object):
   re_include = re.compile('-- *include: *([-a-z]+)')
   re_define = re.compile('-- *define: *([A-Z_0-9]+)')
 
+  def _sub_format(self, match):
+    vsn = match.group(1)
+
+    self.close_define()
+    self.output.write('#define %s_%s \\\n' % (self.var_name, match.group(1)))
+    self.var_printed = True
+
+  def _sub_statement(self, match):
+    name = match.group(1)
+
+    self.close_define()
+    self.output.write('#define STMT_%s %d\n' % (match.group(1),
+                                                self.stmt_count))
+    self.output.write('#define STMT_%d \\\n' % (self.stmt_count,))
+    self.var_printed = True
+
+    self.stmt_count += 1
+
+  def _sub_include(self, match):
+    filepath = os.path.join(self.dirpath, match.group(1) + '.sql')
+
+    self.close_define()
+    self.process_file(open(filepath).read())
+
+  def _sub_define(self, match):
+    define = match.group(1)
+
+    self.output.write('  APR_STRINGIFY(%s) \\\n' % define)
+
   def __init__(self, dirpath, output, var_name):
     self.dirpath = dirpath
     self.output = output
@@ -61,6 +90,13 @@ class Processor(object):
     self.stmt_count = 0
     self.var_printed = False
 
+    self._directives = {
+        self.re_format      : self._sub_format,
+        self.re_statement   : self._sub_statement,
+        self.re_include     : self._sub_include,
+        self.re_define      : self._sub_define,
+      }
+
   def process_file(self, input):
     input = self.re_comments.sub('', input)
 
@@ -68,50 +104,17 @@ class Processor(object):
       line = line.replace('"', '\\"')
 
       if line.strip():
-        match = self.re_format.match(line)
-        if match:
-          vsn = match.group(1)
-
-          self.close_define()
-          self.output.write('#define %s_%s \\\n' % (self.var_name,
-                                                    match.group(1)))
-          self.var_printed = True
-
-          # no need to put the directive into the file. skip this line.
-          continue
-
-        match = self.re_statement.match(line)
-        if match:
-          name = match.group(1)
-
-          self.close_define()
-          self.output.write('#define STMT_%s %d\n' % (match.group(1),
-                                                      self.stmt_count))
-          self.output.write('#define STMT_%d \\\n' % (self.stmt_count,))
-          self.var_printed = True
-
-          self.stmt_count += 1
-
-          # no need to put the directive into the file. skip this line.
-          continue
-
-        match = self.re_include.match(line)
-        if match:
-          filepath = os.path.join(self.dirpath, match.group(1) + '.sql')
-
-          self.close_define()
-          self.process_file(open(filepath).read())
-
-          # no need to put the directive into the file. skip this line.
-          continue
-
-        match = self.re_define.match(line)
-        if match:
-          define = match.group(1)
+        handled = False
 
-          self.output.write('  APR_STRINGIFY(%s) \\\n' % define)
+        for regex, handler in self._directives.iteritems():
+          match = regex.match(line)
+          if match:
+            handler(match)
+            handled = True
+            break
 
-          # no need to put the directive into the file. skip this line.
+        # we've handed the line, so skip it
+        if handled:
           continue
 
         if not self.var_printed: