[dokuwiki] Re: Line-break preservation in Wiki text

  • From: Andreas Gohr <andi@xxxxxxxxxxxxxx>
  • To: dokuwiki@xxxxxxxxxxxxx
  • Date: Sat, 23 Feb 2008 10:50:58 +0100

Hi,

> (1) Add a config option to control the way line breaks are handled
> in xhtml handler.  In addition add some control syntax to switch to
> the opposite mode for the current page (e.g.  ~~LINEBREAK:IGNORE~~
> or ~~LINEBREAK:PRESERVE~~).

I think that one is out of question. Most people seem to be happy with
the way it is. Other can install a plugin.

> (2) Add a hook into the xhtml renderer's "cdata" method to allow  
> plugins to modify the data it processes.

This would mean each call to the cdata method would fire an event,
right? I don't think thats feasible. As you said its called very often
would significantly slow down the whole process. 
 
> (3) Add a hook into the xhtml renderer to allow the behaviour of  
> "cdata" method to be modified.

That one is more interesting, as it would allow to replace the cdata
function completely. But I'm not sure how to implement that without
having to fire lots of events like in (2).

> (4) Add a config setting to select the xhtml renderer in much the
> same way as auth backends or templates are selected.

That one is very interesting. It would mean to create new renderer
class which inherits from the standard xhtml renderer replacing or
extending its standard methods. This would be easy to implement using
renderer plugins and a mechanism to define one renderer as the default
renderer. The overhead would be minimal and we would have much added
flexibility. But you only could use *one* of those plugins using this
method. I still like this approach as it could make a lot of sense for
plugins like the Creole one.

I'm not 100% sure but I think there might be another alternative:

(5) postpone this to the next release and switch to PHP5 only then.
This makes the Reflection API available which might give us an easy way
to replace methods in classes without the need for any complicated hook
system or the use of inheritance. I haven't really digged into what is
possible through reflection so this might not work out as I imagine it.

Andi

-- 
http://www.splitbrain.org

Other related posts: