mallardwriter: Fix fundamental false alarms for the C formatter
authorJasper St. Pierre <jstpierre@mecheye.net>
Wed, 29 Aug 2012 17:46:02 +0000 (14:46 -0300)
committerJasper St. Pierre <jstpierre@mecheye.net>
Wed, 29 Aug 2012 18:00:33 +0000 (15:00 -0300)
Just use a constant translation dictionary. If somebody needs something
more fancy they can use a custom match.

giscanner/mallardwriter.py

index 1fab10d..9c83384 100644 (file)
@@ -223,7 +223,7 @@ class MallardFormatter(object):
                                               self.format_function_name(node))
 
     def _process_fundamental(self, namespace, match, props):
-        raise NotImplementedError
+        return self.fundamentals.get(props['fundamental'], match)
 
     def _process_token(self, tok):
         namespace = self._transformer.namespace
@@ -281,6 +281,12 @@ class MallardFormatter(object):
 class MallardFormatterC(MallardFormatter):
     language = "C"
 
+    fundamentals = {
+        "TRUE": "TRUE",
+        "FALSE": "FALSE",
+        "NULL": "NULL",
+    }
+
     def format_type(self, type_):
         if isinstance(type_, ast.Array):
             return self.format_type(type_.element_type) + '*'
@@ -292,12 +298,15 @@ class MallardFormatterC(MallardFormatter):
     def format_function_name(self, func):
         return func.symbol
 
-    def _process_fundamental(self, namespace, match, props):
-        return props['fundamental']
-
 class MallardFormatterPython(MallardFormatter):
     language = "Python"
 
+    fundamentals = {
+        "TRUE": "True",
+        "FALSE": "False",
+        "NULL": "None",
+    }
+
     def format_type(self, type_):
         if isinstance(type_, ast.Array):
             return '[' + self.format_type(type_.element_type) + ']'
@@ -315,15 +324,6 @@ class MallardFormatterPython(MallardFormatter):
         else:
             return func.name
 
-    def _process_fundamental(self, namespace, match, props):
-        translation = {
-            "NULL": "None",
-            "TRUE": "True",
-            "FALSE": "False",
-        }
-
-        return translation.get(props['fundamental'], match)
-
 LANGUAGES = {
     "c": MallardFormatterC,
     "python": MallardFormatterPython,