Note: Script updated 5 Oct 2007
Normally I use vim to turn my python code into nicely formatted and syntax-coloured examples for my posts, but blog comment fields can swallow leading spaces leaving any posted Python code without indentation.
Most blog comment fields only accept a small set of HTML tags (if any), so I cannot use the vim output.
I have written blogger.py to turn leading spaces into HTML space characters which seems to work on blogger and wordpress.
Here is the code:
'''
blogspace.py
Turns leading spaces into HTML   tokens which shows
as correct indentation on Blogger comment fields
(and maybe other blogs).
Donald. 'Paddy' McCarthy Sept,Oct 2011
'''
import fileinput, re, cgi
def escape(lineiterator=fileinput.input,
cgi_escape=True, tag_with_pre=True, tag_with_br=False):
output =
if tag_with_pre: output.append('<pre>\n')
for line in lineiterator():
if cgi_escape: line = cgi.escape(line)
line = re.sub(r'^(\s*)\s',
lambda m: ' '*m.end(),
line.rstrip())
output.append(line)
if tag_with_br:
output.append('<br>\n')
else:
output.append('\n')
if tag_with_pre: output.append('</pre>\n')
return ''.join(output)
if __name__ == '__main__':
print escape()
- Paddy.
( Also posted here and here)
It doesn't support <pre>-tags? You can add additional formatting inside those tags. Just remember that it is an inline element, so you have to put it inside a paragraph
ReplyDeletepre tags are not allowed in blogger comments. I just tried (again).
ReplyDeleteblogger fails for disallowing such!
ReplyDelete