[Telepathy-commits] [telepathy-spec/master] Support tp:changed
Davyd Madeley
davyd at madeley.id.au
Mon Mar 23 12:29:31 PDT 2009
Abstract away added/deprecated/changed
---
doc/spec/style.css | 11 +++++++++
doc/templates/interface.html | 9 ++++++++
tools/specparser.py | 47 +++++++++++++++++-------------------------
3 files changed, 39 insertions(+), 28 deletions(-)
diff --git a/doc/spec/style.css b/doc/spec/style.css
index e0b52d9..fa388e7 100644
--- a/doc/spec/style.css
+++ b/doc/spec/style.css
@@ -150,6 +150,17 @@ div.added span.version {
font-weight: bold;
}
+div.changed {
+ border-left: 2px solid #8f5902;
+ margin: 1ex;
+ padding-left: 1ex;
+}
+
+div.changed span.version {
+ color: #8f5902;
+ font-weight: bold;
+}
+
div.deprecated,
div.havoc {
border-left: 2px solid #a40000;
diff --git a/doc/templates/interface.html b/doc/templates/interface.html
index 389fc52..9e7698e 100644
--- a/doc/templates/interface.html
+++ b/doc/templates/interface.html
@@ -83,6 +83,7 @@
</div>
#end if
$interface.get_added()
+ $interface.get_changed()
$interface.get_deprecated()
#if $interface.requires
@@ -113,6 +114,7 @@
<h2>$method.short_name ($method.get_in_args()) → $method.get_out_args()</h2>
$method.get_added()
+ $method.get_changed()
$method.get_deprecated()
#if $method.in_args
@@ -125,6 +127,7 @@
#if $arg.get_type(): (<a href="$arg.get_type_url()" title="$arg.get_type_title()">$arg.get_type().short_name</a>)
</li>
$arg.get_added()
+ $arg.get_changed()
$arg.get_deprecated()
$arg.get_docstring()
#end for
@@ -142,6 +145,7 @@
#if $arg.get_type(): (<a href="$arg.get_type_url()" title="$arg.get_type_title()">$arg.get_type().short_name</a>)
</li>
$arg.get_added()
+ $arg.get_changed()
$arg.get_deprecated()
$arg.get_docstring()
#end for
@@ -156,6 +160,7 @@
#for $error in $method.possible_errors
<li><a href="$error.get_url()" title="$error.get_title()">$error.get_error().short_name</a></li>
$error.get_added()
+ $error.get_changed()
$error.get_deprecated()
$error.get_docstring()
#end for
@@ -180,6 +185,7 @@
<h2>$signal.short_name ($signal.get_args())</h2>
$signal.get_added()
+ $signal.get_changed()
$signal.get_deprecated()
#if $signal.args
@@ -192,6 +198,7 @@
#if $arg.get_type(): (<a href="$arg.get_type_url()" title="$arg.get_type_title()">$arg.get_type().short_name</a>)
</li>
$arg.get_added()
+ $arg.get_changed()
$arg.get_deprecated()
$arg.get_docstring()
#end for
@@ -223,6 +230,7 @@
<div class="access">$property.get_access()</div>
$property.get_added()
+ $property.get_changed()
$property.get_deprecated()
$property.get_docstring()
</div>
@@ -243,6 +251,7 @@
</h2>
$type.get_added()
+ $type.get_changed()
$type.get_deprecated()
$type.get_docstring()
$type.get_breakdown()
diff --git a/tools/specparser.py b/tools/specparser.py
index 810a180..0c40c8a 100644
--- a/tools/specparser.py
+++ b/tools/specparser.py
@@ -83,6 +83,8 @@ class Base(object):
except IndexError:
self.deprecated = None
+ self.changed = getChildrenByName(dom, XMLNS_TP, 'changed')
+
def get_type_name(self):
return self.__class__.__name__
@@ -98,54 +100,43 @@ class Base(object):
def get_url(self):
return "%s#%s" % (self.get_interface().get_url(), self.name)
- def get_added(self):
- if self.added is None:
+ def _get_generic_with_ver(self, nnode, htmlclass, txt):
+ if nnode is None:
return ''
else:
# make a copy of this node, turn it into a HTML <div> tag
- node = self.added.cloneNode(True)
+ node = nnode.cloneNode(True)
node.tagName = 'div'
node.baseURI = None
- node.setAttribute('class', 'added')
+ node.setAttribute('class', htmlclass)
try:
node.removeAttribute('version')
span = xml.dom.minidom.parseString(
- '<span class="version">Added in %s.\n</span>' %
- self.added.getAttribute('version')).firstChild
+ ('<span class="version">%s\n</span>' % txt) %
+ nnode.getAttribute('version')).firstChild
node.insertBefore(span, node.firstChild)
except xml.dom.NotFoundErr:
print >> sys.stderr, \
- 'WARNING: %s was added, but gives no version' % self
+ 'WARNING: %s was %s, but gives no version' % (self, htmlclass)
self._convert_to_html(node)
return node.toxml().encode('ascii', 'xmlcharrefreplace')
- def get_deprecated(self):
- if self.deprecated is None:
- return ''
- else:
- # make a copy of this node, turn it into a HTML <div> tag
- node = self.deprecated.cloneNode(True)
- node.tagName = 'div'
- node.baseURI = None
- node.setAttribute('class', 'deprecated')
- try:
- node.removeAttribute('version')
-
- span = xml.dom.minidom.parseString(
- '<span class="version">Deprecated since %s.\n</span>' %
- self.deprecated.getAttribute('version')).firstChild
- node.insertBefore(span, node.firstChild)
- except xml.dom.NotFoundErr:
- print >> sys.stderr, \
- 'WARNING: %s is deprecated, but gives no version' % self
+ def get_added(self):
+ return self._get_generic_with_ver(self.added, 'added',
+ "Added in %s.")
- self._convert_to_html(node)
+ def get_deprecated(self):
+ return self._get_generic_with_ver(self.deprecated, 'deprecated',
+ "Deprecated since %s.")
- return node.toxml().encode('ascii', 'xmlcharrefreplace')
+ def get_changed(self):
+ return '\n'.join(map(lambda n:
+ self._get_generic_with_ver(n, 'changed', "Changed in %s."),
+ self.changed))
def get_docstring(self):
"""Get the docstring for this node, but do node substitution to
--
1.5.6.5
More information about the telepathy-commits
mailing list