Parameter koennen in to_html uebergeben werden
authorFelix Schumacher <felix@zottel.(none)>
Fri, 3 Oct 2008 16:09:50 +0000 (18:09 +0200)
committerFelix Schumacher <felix@zottel.(none)>
Fri, 3 Oct 2008 16:09:50 +0000 (18:09 +0200)
lueckentext.py
text1.txt

index fd9fb30..d476789 100644 (file)
@@ -3,11 +3,17 @@ import re
 
 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)
 
@@ -17,4 +23,4 @@ def get_params(text=""):
   for value in REPLACE_TEXT.findall(text):
     result["l%d" % counter] = value
     counter += 1
-  return result
+  return result  
index f507b1c..9fff70d 100644 (file)
--- a/text1.txt
+++ b/text1.txt
 ... # 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>