REPLACE_TEXT=re.compile('\[([^\]]+)\]', re.M)
-def to_html(text=""):
+def to_html(text="", params={}):
result = text
counter = 1
while REPLACE_TEXT.search(result):
- result = REPLACE_TEXT.sub('<input type="text" name="%s" />' % ("l%d" % counter), result, 1)
+ key = 'l%d' % counter
+ 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)
counter += 1
return '<div class="lueckentext">\n%s\n</div>' % (result)
for value in REPLACE_TEXT.findall(text):
result["l%d" % counter] = value
counter += 1
- return result
+ return result
... # doctest: +ELLIPSIS
... # doctest: +NORMALIZE_WHITESPACE
<div class="lueckentext">
-Dies <input type="text" name="l1" /> ein Lueckentext.
-Er <input type="text" name="l2" /> mehrere Worte und
-mehrere Zeilen. Damit <input type="text" name="l3" />
-ausgefuellt werden kann, sollte man <input type="text" name="l4" />
+Dies <input type="text" class="todo" name="l1" value="" /> ein Lueckentext.
+Er <input type="text" class="todo" name="l2" value="" /> 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.
+</div>
+
+>>> print lueckentext.to_html(
+... u"""Dies [ist] ein Lueckentext. Er [enthaelt] mehrere
+... Worte und
+... mehrere Zeilen. Damit [er] ausgefuellt werden kann,
+... sollte man [die] deutsche Sprache kennen.
+... """, {'l2': 'enthaelt', 'l1': 'test'} )
+... # doctest: +ELLIPSIS
+... # 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
+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.
</div>