import re
REPLACE_TEXT=re.compile('\[([^\]]+)\]', re.M)
+REPLACE_TEMPLATES = {
+ True: '''<span class="ok">%(text)s</span>
+ <input type="hidden" name="%(key)s" value="%(text)s" />''',
+ False: '''<input type="text" class="todo" name="%(key)s" value="%(text)s" />''',
+ }
def to_html(text="", params={}):
result = text
css_class='todo'
todo = params.get(key, '')
solution = REPLACE_TEXT.search(result).group()
- if "[%s]" % todo == solution:
- css_class = 'ok'
- result = REPLACE_TEXT.sub('<input type="text" class="%s" name="%s" value="%s" />' % (css_class, key, params.get(key, '')), result, 1)
+ is_solution = "[%s]" % todo == solution
+ result = REPLACE_TEXT.sub(REPLACE_TEMPLATES[is_solution] % { 'text': params.get(key, ''), 'key': key }, result, 1)
counter += 1
return '<div class="lueckentext">\n%s\n</div>' % (result)
... # doctest: +NORMALIZE_WHITESPACE
<div class="lueckentext">
Dies <input type="text" class="todo" name="l1" value="test" /> ein Lueckentext.
-Er <input type="text" class="ok" name="l2" value="enthaelt" /> mehrere Worte und
+Er <span class="ok">enthaelt</span>
+ <input type="hidden" name="l2" value="enthaelt" /> mehrere Worte und
mehrere Zeilen. Damit <input type="text" class="todo" name="l3" value="" />
ausgefuellt werden kann, sollte man <input type="text" class="todo" name="l4" value="" />
deutsche Sprache kennen.