[Telepathy-commits] [telepathy-spec/master] Errors and docstrings all around
Davyd Madeley
davyd at madeley.id.au
Mon Mar 23 12:29:25 PDT 2009
---
doc/templates/interface.html | 31 +++++++++++++++++++++++--------
tools/specparser.py | 35 +++++++++++++++++++++++++++++------
2 files changed, 52 insertions(+), 14 deletions(-)
diff --git a/doc/templates/interface.html b/doc/templates/interface.html
index af9525d..ee75684 100644
--- a/doc/templates/interface.html
+++ b/doc/templates/interface.html
@@ -25,31 +25,42 @@
#if $method.in_args
<div class="indent">
<h3>Parameters</h3>
+ <ul>
#for $arg in $method.in_args
- $arg.short_name — $arg.dbus_type
- #if $arg.type: (<a href="$arg.type.get_url()" title="$arg.type.get_title()">$arg.type.short_name</a>)
- <br/>
+ <li>
+ $arg.short_name — $arg.dbus_type
+ #if $arg.type: (<a href="$arg.type.get_url()" title="$arg.type.get_title()">$arg.type.short_name</a>)
+ </li>
+ $arg.get_docstring()
#end for
+ </ul>
</div>
#end if
#if $method.out_args
<div class="indent">
<h3>Returns</h3>
+ <ul>
#for $arg in $method.out_args
- $arg.short_name — $arg.dbus_type
- #if $arg.type: (<a href="$arg.type.get_url()" title="$arg.type.get_title()">$arg.type.short_name</a>)
- <br/>
+ <li>
+ $arg.short_name — $arg.dbus_type
+ #if $arg.type: (<a href="$arg.type.get_url()" title="$arg.type.get_title()">$arg.type.short_name</a>)
+ </li>
+ $arg.get_docstring()
#end for
+ </ul>
</div>
#end if
#if $method.possible_errors
<div class="indent">
<h3>Possible Errors</h3>
+ <ul>
#for $error in $method.possible_errors
- $error<br/>
+ <li><a href="$error.get_url()" title="$error.get_title()">$error.short_name</a></li>
+ $error.get_docstring()
#end for
+ </ul>
</div>
#end if
@@ -69,11 +80,15 @@
#if $signal.args
<div class="indent">
<h3>Parameters</h3>
+ <ul>
#for $arg in $signal.args
+ <li>
$arg.short_name — $arg.dbus_type
#if $arg.type: (<a href="$arg.type.get_url()" title="$arg.type.get_title()">$arg.type.short_name</a>)
- <br/>
+ </li>
+ $arg.get_docstring()
#end for
+ </ul>
</div>
#end if
$signal.get_docstring()
diff --git a/tools/specparser.py b/tools/specparser.py
index f2f54d6..722f25e 100644
--- a/tools/specparser.py
+++ b/tools/specparser.py
@@ -48,6 +48,9 @@ class base (object):
def get_spec (self):
return self.parent.get_spec ()
+ def get_root_namespace (self):
+ return self.get_interface ().name
+
def get_interface (self):
return self.parent.get_interface ()
@@ -75,15 +78,15 @@ class base (object):
# rewrite <tp:member-ref>
spec = self.get_spec ()
- interface = self.get_interface ()
+ namespace = self.get_root_namespace ()
for n in node.getElementsByTagNameNS (XMLNS_TP, 'member-ref'):
key = getText (n)
try:
- o = spec.lookup (key, namespace = interface.name)
+ o = spec.lookup (key, namespace = namespace)
except KeyError:
print >> sys.stderr, \
- "Key `%s' not known in interface `%s'" % (
- key, interface.name)
+ "Key `%s' not known in namespace `%s'" % (
+ key, namespace)
continue
n.tagName = 'a'
@@ -120,6 +123,23 @@ class PossibleError (base):
def __init__ (self, parent, namespace, dom):
super (PossibleError, self).__init__ (parent, namespace, dom)
+ def get_error (self):
+ spec = self.get_spec ()
+ return spec.errors[self.name]
+
+ def get_url (self):
+ self.get_error ().get_url ()
+
+ def get_title (self):
+ self.get_error ().get_title ()
+
+ def get_docstring (self):
+ d = super (PossibleError, self).get_docstring ()
+ if d == '':
+ return self.get_error ().get_docstring ()
+ else:
+ return d
+
class Method (base):
def __init__ (self, parent, namespace, dom):
super (Method, self).__init__ (parent, namespace, dom)
@@ -131,7 +151,7 @@ class Method (base):
self.in_args = filter (lambda a: a.direction == Arg.DIRECTION_IN, args)
self.out_args = filter (lambda a: a.direction == Arg.DIRECTION_OUT, args)
- self.possible_errors = build_list (self, PossibleError, self.name,
+ self.possible_errors = build_list (self, PossibleError, None,
dom.getElementsByTagNameNS (XMLNS_TP, 'error'))
def get_in_args (self):
@@ -236,6 +256,9 @@ class Interface (base):
class Error (base):
def get_url (self):
return '#FIXME'
+
+ def get_root_namespace (self):
+ return self.namespace
class DBusType (base):
"""The base class for all D-Bus types referred to in the spec.
@@ -285,7 +308,7 @@ class Spec (object):
def get_spec (self):
return self
-
+
def lookup (self, name, namespace = None):
key = build_name (namespace, name)
return self.everything[key]
--
1.5.6.5
More information about the telepathy-commits
mailing list