#!/usr/bin/python '''Minify XHTML Simple filter. This simple XHTML minifier removes only indentation and comments. The reason I wrote this is that the other HTML minifiers caused validation errors. ''' #import sys no_minify = [ ('
') # Start/stop patterns.
]
def engine(get_input, set_output):
'''get_input is a function that returns a string (one line) with a
trailing newline.
set_output is a function that takes one argument: string.
Returns when get_input returns empty string.
'''
nop_mode = False
comment = False
in_str = get_input()
if not in_str:
return
#Comment
# Leave?
#No comment
# Does a comment begin on this line?
# nop_mode
# Leave nop_mode?
# normal mode
# Enter nop_mode?
# Did a comment begin on this line?
while True:
# Get input it before the loop and in the end, simplifies
# nop_mode changes.
if comment:
# Leave comment mode?
ptr = in_str.find('-->')
if ptr >= 0:
in_str = in_str[ptr + 3:]
comment = False
continue
else:
# Does a comment begin on this line?
comment_ptr = in_str.find('