summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.co.uk>2011-08-14 16:21:57 +0200
committerTomeu Vizoso <tomeu.vizoso@collabora.co.uk>2011-08-14 16:22:27 +0200
commit0cb3098763aeab8b0a9ec3a1dc43d80f58d8dffc (patch)
treee19ebc9e65da695e5c9314c3d4174c46f57692fb
parentdcfbb896abaa209190d9119cd5a95cc502cc5c47 (diff)
downloadgobject-introspection-gir-docbook-2.tar.gz
g-ir-doc-tool: print class declaration line in Pythongir-docbook-2
-rw-r--r--giscanner/docbookwriter.py54
1 files changed, 40 insertions, 14 deletions
diff --git a/giscanner/docbookwriter.py b/giscanner/docbookwriter.py
index f4544523..38f7f7dc 100644
--- a/giscanner/docbookwriter.py
+++ b/giscanner/docbookwriter.py
@@ -264,6 +264,29 @@ class DocBookFormatterPython(DocBookFormatter):
def get_title(self, page):
return "%s.%s" % (page.ast.namespace.name, page.name)
+ def render_struct(self, page):
+ class_ = page.ast
+ try:
+ self.writer.disable_whitespace()
+ self.writer.write_line("class %s" % self.get_title(page))
+
+ if hasattr(page.ast, "parent") and page.ast.parent is not None:
+ if isinstance(page.ast.parent, ast.Type):
+ parent_name = page.ast.parent
+ else:
+ parent_name = "%s.%s" % (page.ast.parent.namespace.name,
+ page.ast.parent.name)
+ elif isinstance(page.ast, ast.Interface):
+ parent_name = "GObject.Interface"
+ else:
+ parent_name = None
+ if parent_name is not None:
+ self.writer.write_line("(%s)" % (parent_name))
+
+ self.writer.write_line(":\n")
+ finally:
+ self.writer.enable_whitespace()
+
class DocBookFormatterC(DocBookFormatter):
def get_page_name(self, node):
@@ -274,6 +297,18 @@ class DocBookFormatterC(DocBookFormatter):
def get_title(self, page):
return page.ast.ctype
+ def render_struct(self, page):
+ try:
+ self.writer.disable_whitespace()
+ self.writer.write_line("struct ")
+ self.writer.write_tag(
+ "link",
+ [("linkend", "%s-struct" % page.name)],
+ "%s" % page.name)
+ self.writer.write_line(";\n")
+ finally:
+ self.writer.enable_whitespace()
+
class DocBookPage(object):
def __init__(self, name, ast):
@@ -394,16 +429,7 @@ class DocBookWriter(object):
self._writer.write_tag("anchor", [("id", page.name)])
with self._writer.tagcontext('synopsis'):
- self._writer.disable_whitespace()
- try:
- self._writer.write_line("struct ")
- self._writer.write_tag(
- "link",
- [("linkend", "%s-struct" % page.name)],
- "%s" % page.name)
- self._writer.write_line(";\n")
- finally:
- self._writer.enable_whitespace()
+ self._formatter.render_struct(page)
for entity in page.get_methods():
self._formatter.render_method(entity, link=True)
@@ -466,9 +492,9 @@ class DocBookWriter(object):
"Details")
if isinstance(page.ast, ast.Alias):
- self._render_alias(page.ast)
+ self._render_alias_detail(page.ast)
else:
- self._render_struct(page.ast)
+ self._render_struct_detail(page.ast)
for entity in page.get_methods():
self._render_method(entity)
@@ -491,7 +517,7 @@ class DocBookWriter(object):
for entity in page.get_signals():
self._render_signal(entity)
- def _render_alias(self, alias):
+ def _render_alias_detail(self, alias):
with self._writer.tagcontext('refsect2',
[('id', "%s" % alias.ctype),
('role', 'typedef')]):
@@ -504,7 +530,7 @@ class DocBookWriter(object):
alias.ctype))
self._writer.write_tag("para", [], alias.doc)
- def _render_struct(self, struct):
+ def _render_struct_detail(self, struct):
with self._writer.tagcontext('refsect2',
[('id', "%s-struct" % struct.ctype),
('role', 'struct')]):