From: Aahz <aa...@py...> - 2002-10-11 04:49:24
|
On Thu, Oct 10, 2002, David Goodger wrote: > Aahz wrote: >> >> What am I doing wrong with this directive:: >> >> from docutils import nodes >> from docutils.parsers.rst import directives >> >> registry = directives._directive_registry >> registry['index'] = ('OOdirectives', 'index_directive') > > You must be importing this module explicitly somewhere, right? > Otherwise, how does the registration code run before the directive is > registered? ;-> Of course. I'm running a hacked publish.py currently to validate the structure. Next I'll be following your directions to Michael Hudson to generate the actual OpenOffice.org XML (needs to go into a string so that it can all get shoved into a ZIP file with the metadata). >> class index_entry(nodes.General, nodes.Element): pass > > This is the problem. Replace "nodes.Element" with > "nodes.TextElement". Their __init__ signatures are different. Got it. I was getting confused by the inheritance tree in nodes.py. I'm still not sure that's the route I want to take, but it'll do for now. >> return [node] + messages >> >> index_directive.content = 1 > > I'm guessing that this is a "first draft" of the directive, yes? > You'll probably want to create an index_entry for each of the terms > listed in the directive, and insert them at the beginning of the > paragraph (therefore "index_entry" should be an inline element). In > fact, the class declaration should probably be:: > > class index_entry(nodes.Inline, nodes.TextElement): pass It appears that simply declaring something Inline doesn't do anything; I'm assuming I need to run a transform in the writer? Or should the directive find its parent/predecessor-sibling during parsing? >> If I replace the code of index_directive() with "return []", I don't >> get an exception. > > That's odd. Are you sure you made no other changes? Yes, that line replaces all four lines of code, so the node wasn't getting created. ;-) I was actually starting to think that the node creation might be the problem before you responded, but I was at the point where staring at the code gave me brain-burn. -- Aahz (aa...@py...) <*> http://www.pythoncraft.com/ Project Vote Smart: http://www.vote-smart.org/ |