[Zope] verbatim code in ZWikiPage
John Hunter
jdhunter@ace.bsd.uchicago.edu
21 May 2001 09:17:54 -0500
>>>>> "Simon" == Simon Michael <simon@joyful.com> writes:
Simon> that's right. I think WikiForNow solves this specific
Simon> problem, and it's one of the changes I hope to get into
Simon> zwiki 1.0. If you're in a hurry you might want to check
Simon> what Ken did (and send me a patch if it's easy :).
Ok, got it.
I added a function to ZWikiPage.py that calls the wikilink
substitutions *unless* you are in a PRE environment. Thanks to Greg
Jorgensen <greg@pdxperts.com> on c.l.python who suggested the method
used below.
Below is the diff on ZWikiPage.py from v0.8.1. I haven't submitted a
diff before (I just ran 'diff orig new') so if there is a more
appropriate syntax, please let me know.
Form all of my tests, it works as desired. A word of warning though,
I believe the re objects use some methods not available in earlier
releases of python. I have only tested this on Zope-2.3.2 with
Python-2.1.
228a229,242
> #this function replaces wikilinks unless in an html 'pre' environment
> def _sub_wikilinks_unless_code(self, s):
> rgx = re.compile(r'(<pre>.*?</pre>)', re.DOTALL+re.IGNORECASE)
> chunks = rgx.split(s)
> out = ""
> for chunk in chunks:
> if chunk[0:5].lower() != '<pre>':
> # Not in a code environment; do wikilinks
> chunk = re.sub(interwikilink, self._interwikilink_replace, chunk)
> chunk = re.sub(wikilink, self._wikilink_replace, chunk)
> out = out + chunk
>
> return out
>
241,242c255
< t = re.sub(interwikilink, self._interwikilink_replace, t)
< t = re.sub(wikilink, self._wikilink_replace, t)
---
> t = self._sub_wikilinks_unless_code(t)
252,253c265
< t = re.sub(interwikilink, self._interwikilink_replace, t)
< t = re.sub(wikilink, self._wikilink_replace, t)
---
> t = self._sub_wikilinks_unless_code(t)
264,265c276
< t = re.sub(interwikilink, self._interwikilink_replace, t)
< t = re.sub(wikilink, self._wikilink_replace, t)
---
> t = self._sub_wikilinks_unless_code(t)
Happy wikiing,
John Hunter