Hi,
On Fri, Apr 22, 2022 at 09:36:30AM -0700, Andrea Bolognani wrote:
On Wed, Apr 20, 2022 at 09:08:18PM +0200, Victor Toso wrote:
> def serialize_variable(self, output, name):
> id = self.idx.variables[name]
> - if id.info is not None:
> - output.write(" <variable name='%s' file='%s'
type='%s'/>\n" % (
> - name, self.modulename_file(id.header), id.info))
> + (type, comment) = id.info
> + (since, comment, _) = self.retrieve_comment_tags(name, comment)
> + version_tag = len(since) > 0 and f" version='{since}'"
or ""
> + output.write(" <variable name='%s' file='%s'
type='%s'%s" % (
> + name, self.modulename_file(id.header), type, version_tag))
> + if len(comment) == 0:
> + output.write("/>\n")
> else:
> - output.write(" <variable name='%s'
file='%s'/>\n" % (
> - name, self.modulename_file(id.header)))
> + output.write(">\n
<info><![CDATA[%s]]></info>\n" % (comment))
Note that, for variables, the comment will not have gone
through the same sanifications as for other symbols, and so the
output will look like
<variable name='virConnectAuthPtrDefault' file='libvirt-host'
type='virConnectAuthPtr' version='0.4.1'>
<info><![CDATA[virConnectAuthPtrDefault:
A default implementation of the authentication callbacks. This
implementation is suitable for command line based tools. It will
prompt for username, passwords, realm and one time keys as needed.
It will print on STDOUT, and read from STDIN. If this is not
suitable for the application's needs an alternative implementation
should be provided.]]></info>
</variable>
The first two lines of the CDATA section should obviously not be
there.
Ah, nice catch. You can see that I had to dig around to store
the variable's documentation but I didn't notice it was before
the cleanup. I actually added an extra commit just help in the
case of variable's docstring.
Various functions have code like
lines = self.comment.split('\n')
if lines[0] == '*':
del lines[0]
if lines[0] != "* %s:" % name:
if not quiet:
self.warning("Misformatted function comment for %s" % name)
self.warning(" Expecting '* %s:' got '%s'" % (name,
lines[0]))
return (ret[0], retdesc), args, desc
del lines[0]
while lines[0] == '*':
del lines[0]
to deal with this scenario, but I'm unclear on where exactly
you'd put the equivalent for variables. The whole script is a
giant underdocumented[1] mess and I'm utterly impressed by your
ability to understand it well enough to add features to it.
The itching to change the code all around is still here. I
actually created another (local) branch to put some fixes and
removing dead code... but I knew if I started reworking things it
would consume more time to reach the end goal,
libvirt-go-module's MR.
[1] I can absolutely appreciate the irony in that ;)
Indeed :)
I'm finishing the last touches of v4 and I plan to send it
without this addressed. Later, perhaps Today, I'll add a patch on
top that can either be an +1 or squashed in to address this.
Many thanks for noticing this!
Cheers,
Victor