[gobject-introspection/wip/transformer] Refactor property implementation.



commit 145744f9b6de836cfb6445b65ff15118fce2a456
Author: Zachary Goldberg <zgoldberg src gnome org>
Date:   Thu Jul 29 05:19:31 2010 -0400

    Refactor property implementation.

 giscanner/gicodeformatters.py |   44 +++++++++++++++++++++++++++++++++++++---
 giscanner/gidocgen.py         |   39 +++--------------------------------
 2 files changed, 44 insertions(+), 39 deletions(-)
---
diff --git a/giscanner/gicodeformatters.py b/giscanner/gicodeformatters.py
index 13a2cae..ac848f2 100644
--- a/giscanner/gicodeformatters.py
+++ b/giscanner/gicodeformatters.py
@@ -30,10 +30,46 @@ class DocBookFormatter(object):
             clazz.render_enum(writer, entity.get_data(), **args)
         elif entity.get_type() == FIELD:
             clazz.render_field(writer, entity.get_data(), **args)
+        elif entity.get_type() == PROPERTY:
+            clazz.render_property(writer, entity.get_data(), **args)
 
     @classmethod
-    def render_field(clazz, writer, enum, divs=True, **args):
-        writer.write_line("%s - %s" % (enum.name, clazz.get_type_string(enum.type)), do_escape=True)
+    def render_property(clazz, writer, prop, divs=False, **args):
+        writer.write_line("&quot;")
+
+        writer.write_tag("link", [
+                ("linkend", "%s%s-%s-%s" % (                        
+                        prop.parent_class.name,
+                        prop.name,
+                        PROPERTY,
+                        clazz.name
+                        ))],
+                         prop.name)
+        writer.write_line("&quot;")
+        writer.write_line(space(30 - len(prop.name)))
+        writer.write_tag("link", [
+                ("linkend", 
+                 clazz.render_typelinkname(prop.type,
+                                           prop.namespace.name))],
+                         clazz.get_type_string(
+                prop.type))
+        writer.write_line("%s: " % space(
+                25 - len(clazz.get_type_string(prop.type))))
+                
+        rwstring = []
+        if prop.readable:
+            rwstring.append("Read")
+        if prop.writable:
+            rwstring.append("Write")
+        if prop.construct_only:
+            rwstring.append("Construct Only")
+
+        writer.write_line(" / ".join(rwstring))
+        writer.write_line("\n")
+
+    @classmethod
+    def render_field(clazz, writer, field, divs=True, **args):
+        writer.write_line("%s - %s" % (field.name, clazz.get_type_string(field.type)), do_escape=True)
 
     @classmethod
     def render_enum(clazz, writer, enum, divs=True, **args):
@@ -79,7 +115,7 @@ class DocBookFormatter(object):
                                        "%s%s-%s-%s" % (
                             method.parent_class.name,
                             method.name,
-                            "method",
+                            METHOD,
                             clazz.name))],
                              clazz.get_method_name(method)) 
         else:
@@ -174,7 +210,7 @@ class CDocBookFormatter(DocBookFormatter):
             return parameters
 
         param = Parameter("self", method.parent_class.glib_type_struct,
-                                    transfer=None)
+                                    transfer=None, direction="in")
 
         parameters = [p for p in parameters] # Make a copy
         if not param.type.ctype:
diff --git a/giscanner/gidocgen.py b/giscanner/gidocgen.py
index 199d1e4..5e05cb0 100644
--- a/giscanner/gidocgen.py
+++ b/giscanner/gidocgen.py
@@ -154,8 +154,8 @@ class DocBookWriter(DocWriter):
                              [('id', func_id),
                               ('role', 'function')])
         self.writer.write_tag("title", [], entity.get_name())
-            
-        
+             
+       
         with self.writer.tagcontext("indexterm",
                                     [("zone", "%s" % func_id)]):
             self.writer.write_tag("primary", [], func_id)
@@ -177,7 +177,7 @@ class DocBookWriter(DocWriter):
                                   "Synopsis")
 
             with self.writer.tagcontext('synopsis'):
-                for entity in page.get_entities():
+                for entity in page.get_entities("method"):
                     formatter.render(self.writer, entity, 
                                      divs=False, method_name_link=True)
 
@@ -268,38 +268,7 @@ class DocBookWriter(DocWriter):
             self.writer.push_tag("synopsis")
             self.writer.disable_whitespace()
             for prop in page.get_entities("property"):
-                self.writer.write_line("&quot;")
-
-                self.writer.write_tag("link", [
-                        ("linkend", "%s-%s-%s_%s" % (
-                                page.namespace.name,
-                                page.name,
-                                prop.get_data().name,
-                                formatter.name
-                                ))],
-                                      prop.get_data().name)
-                self.writer.write_line("&quot;")
-                self.writer.write_line(space(30 - len(prop.get_data().name)))
-                self.writer.write_tag("link", [
-                        ("linkend", 
-                         formatter.render_typelinkname(prop.get_data().type,
-                                                       page.namespace.name))],
-                        formatter.get_type_string(
-                            prop.get_data().type))
-                self.writer.write_line("%s: " % space(
-                        25 - len(formatter.get_type_string(
-                            prop.get_data().type))))
-                
-                rwstring = []
-                if prop.get_data().readable:
-                    rwstring.append("Read")
-                if prop.get_data().writable:
-                    rwstring.append("Write")
-                if prop.get_data().construct_only:
-                    rwstring.append("Construct Only")
-
-                self.writer.write_line(" / ".join(rwstring))
-                self.writer.write_line("\n")
+                formatter.render(self.writer, prop, page=page)
 
             self.writer.enable_whitespace()
             self.writer.pop_tag()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]