[libvirt] [PATCH] Fix API doc extractor to stop munging comment formatting
Daniel Veillard
veillard at redhat.com
Fri Sep 25 13:33:41 UTC 2009
On Fri, Sep 25, 2009 at 01:28:51PM +0100, Daniel P. Berrange wrote:
> The python method help docs are copied across from the C
> funtion comments, but in the process all line breaks and
> indentation was being lost. This made the resulting text
> and code examples completely unreadable. Both the API
> doc extractor and the python generator were destroying
> whitespace & this fixes them to preserve it exactly.
>
> * docs/apibuild.py: Preserve all whitespace when extracting
> function comments. Print function comment inside a <![CDATA[
> section to fully preserve all whitespace. Look for the
> word 'returns' to describe return values, instead of 'return'
> to avoid getting confused with code examples including the
> C 'return' statement.
> * python/generator.py: Preserve all whitespace when printing
> function help docs
> * src/libvirt.c: Change any return parameter indicated by
> 'return' to be 'returns', to avoid confusing the API extractor
[...]
> if desc != None and desc != "":
> - output.write(" <info>%s</info>\n" % (escape(desc)))
> + output.write(" <info><![CDATA[%s]]></info>\n" % (desc))
Ah, okay you're using CDATA !
> self.indexString(name, desc)
> for arg in args:
> (name, desc) = arg
> @@ -1760,7 +1771,7 @@ class docBuilder:
> try:
> desc = id.extra
> if desc != None and desc != "":
> - output.write(">\n <info>%s</info>\n" % (escape(desc)))
> + output.write(">\n <info><![CDATA[%s]]></info>\n" % (desc))
> output.write(" </typedef>\n")
> else:
> output.write("/>\n")
> @@ -1796,7 +1807,7 @@ class docBuilder:
> output.write(" <cond>%s</cond>\n"% (apstr));
> try:
> (ret, params, desc) = id.info
> - output.write(" <info>%s</info>\n" % (escape(desc)))
> + output.write(" <info><![CDATA[%s]]></info>\n" % (desc))
> self.indexString(name, desc)
> if ret[0] != None:
> if ret[0] == "void":
> diff --git a/python/generator.py b/python/generator.py
> index c34cb34..178a415 100755
> --- a/python/generator.py
> +++ b/python/generator.py
> @@ -44,6 +44,7 @@ if sgmlop:
> self.finish_starttag = target.start
> self.finish_endtag = target.end
> self.handle_data = target.data
> + self.handle_cdata = target.cdata
>
> # activate parser
> self.parser = sgmlop.XMLParser()
> @@ -78,6 +79,7 @@ class SlowParser(xmllib.XMLParser):
> def __init__(self, target):
> self.unknown_starttag = target.start
> self.handle_data = target.data
> + self.handle_cdata = target.cdata
> self.unknown_endtag = target.end
> xmllib.XMLParser.__init__(self)
>
> @@ -108,6 +110,11 @@ class docParser:
> print "data %s" % text
> self._data.append(text)
>
> + def cdata(self, text):
> + if debug:
> + print "data %s" % text
> + self._data.append(text)
> +
> def start(self, tag, attrs):
Okay makes sense, plus the large amount of return -> Returns changes
ACK !
I'm still waiting to see what this gives in the HTML docs :-)
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list