ParserMarket/NoCamelCase2/DisplaysNone
When I implemented the nocamelcase2 parser on our MoinMoin 1.9.2 implementation, it had the effect of leaving a residual "None" at the end of each nocamelcase parser block. If the parser was applied to the entire page, the word None appeared at the end of the page. I never fully understood why this was happening but I did find a workaround fix.
Example:
{{{#!nocamelcase
'''Don't Use:''' MessageBox
'''Instead Use:''' InvMessageBox / InvErrorBox
}}}
Displays:
Don't Use: MessageBox
Instead Use: InvMessageBox / InvErrorBox
None
Note the extraneous "None". Yech.
My "Fix"
Here is the nocamelcase2.py parser to prevent this from happening:
## NoCamelCase2 - Written by Vangelis Livadiotis - Adapted from "NoCamelCase by FlorianFesti"
## Tested with MoinMoin 1.7.2
## By no means a perfect plugin (it expects the comment "# CamelCase wiki words" in tne text_moin_wiki.py file)
## - but it works!
## 04-11-08
##
### BDB 10/26/2010 - fixed so that "None" is not emitted to screen
from MoinMoin.parser import text_moin_wiki as wiki
import re
class Parser(wiki.Parser):
def __init__(self, raw, request, **kw):
wiki.Parser.scan_rules = re.sub(r"\)\|\(\?P<word>.*(.|\n)*# CamelCase wiki words", "",self.scan_rules)
self.word_rule = ''
wiki.Parser.__init__(self, raw, request, **kw)
def format(self, formatter, inhibit_p=False):
self.scan_rules = re.sub(r"\)\|\(\?P<word>.*(.|\n)*# CamelCase wiki words", "",self.scan_rules)
self.scan_re = re.compile(self.scan_rules, re.UNICODE|re.VERBOSE)
err = wiki.Parser.format(self, formatter, inhibit_p=False)
if err:
self.request.write(err)Note: After thinking about it, I came up with a better fix (above) and removed my ugly hack. If you want to see my ugly hack, look at the prior version of this page.
