[docbook] Make DocBookWriter use Transformer
authorLaszlo Pandy <lpandy@src.gnome.org>
Thu, 11 Aug 2011 08:57:14 +0000 (10:57 +0200)
committerLaszlo Pandy <lpandy@src.gnome.org>
Thu, 11 Aug 2011 10:40:24 +0000 (12:40 +0200)
giscanner/docbookwriter.py
giscanner/docmain.py
giscanner/transformer.py
tools/g-ir-doc-tool.in

index 42c4fbe..8e38ec4 100644 (file)
@@ -160,11 +160,13 @@ class DocBookWriter(object):
     def _add_page(self, page):
         self._pages.append(page)
 
-    def add_namespace(self, namespace):
-        self._namespace = namespace
-        self._formatter.set_namespace(namespace)
+    def add_transformer(self, transformer):
+        self._transformer = transformer
+
+        self._namespace = self._transformer._namespace
+        self._formatter.set_namespace(self._namespace)
 
-        for name, node in namespace.iteritems():
+        for name, node in self._namespace.iteritems():
             self._add_node(node, name)
 
     def _add_node(self, node, name):
index 7684944..29b5ddf 100644 (file)
 import optparse
 
 from .docbookwriter import DocBookWriter
-from .girparser import GIRParser
+from .transformer import Transformer
 
 class GIDocGenerator(object):
 
     def parse(self, filename):
-        self.parser = GIRParser()
-        self.parser.parse(filename)
+        self.transformer = Transformer.parse_from_gir(filename)
 
     def generate(self, writer, output):
-        ns = self.parser.get_namespace()
-        writer.add_namespace(ns)
+        writer.add_transformer(self.transformer)
         writer.write(output)
 
 def doc_main(args):
index 6689fc7..88be838 100644 (file)
@@ -178,6 +178,15 @@ None."""
                          % (girname, searchdirs))
         sys.exit(1)
 
+    @staticmethod
+    def parse_from_gir(filename):
+        transformer = Transformer(None)
+        transformer._parse_include(filename)
+        parser = transformer._cachestore.load(filename)
+        transformer._namespace = parser.get_namespace()
+        del transformer._includes[transformer._namespace.name]
+        return transformer
+
     def _parse_include(self, filename, uninstalled=False):
         parser = None
         if self._cachestore is not None:
index dcf0112..4a84afa 100644 (file)
@@ -21,6 +21,9 @@
 
 import os
 import sys
+import __builtin__
+
+__builtin__.__dict__['DATADIR'] = "@datarootdir@"
 
 if 'GI_SCANNER_DEBUG' in os.environ:
     def on_exception(exctype, value, tb):