Author: ianb
Date: 2005-12-19 18:41:06 +0000 (Mon, 19 Dec 2005)
New Revision: 1432

Modified:
   FormEncode/trunk/formencode/api.py
   FormEncode/trunk/formencode/variabledecode.py
Log:
Added option to variable_encode to not include the --repetitions variables, and 
added an option to Invalid.unpack_errors(True) that returns a flat dictionary 
that also excludes those --repetitions variables

Modified: FormEncode/trunk/formencode/api.py
===================================================================
--- FormEncode/trunk/formencode/api.py  2005-12-19 18:39:06 UTC (rev 1431)
+++ FormEncode/trunk/formencode/api.py  2005-12-19 18:41:06 UTC (rev 1432)
@@ -63,12 +63,17 @@
         #    val += " (value: %s)" % repr(self.value)
         return val    
 
-    def unpack_errors(self):
+    def unpack_errors(self, encode_variables=False):
         """
         Returns the error as a simple data structure -- lists,
         dictionaries, and strings.
+        
+        If ``encode_variables`` is true, then this will return a flat
+        dictionary, encoded with variable_encode
         """
         if self.error_list:
+            assert not encode_variables, (
+                "You can only encode dictionary errors")
             assert not self.error_dict
             result = []
             for item in self.error_list:
@@ -84,8 +89,13 @@
                     result[name] = item
                 else:
                     result[name] = item.unpack_errors()
+            if encode_variables:
+                import variabledecode
+                result = variabledecode.variable_encode(result, 
add_repetitions=False)
             return result
         else:
+            assert not encode_variables, (
+                "You can only encode dictionary errors")
             return self.msg
 
 

Modified: FormEncode/trunk/formencode/variabledecode.py
===================================================================
--- FormEncode/trunk/formencode/variabledecode.py       2005-12-19 18:39:06 UTC 
(rev 1431)
+++ FormEncode/trunk/formencode/variabledecode.py       2005-12-19 18:41:06 UTC 
(rev 1432)
@@ -104,7 +104,11 @@
         
     return result
 
+<<<<<<< .mine
+def variable_encode(d, prepend='', result=None, add_repetitions=True):
+=======
 def variable_encode(d, prepend='', result=None, dict_char='.', list_char='-'):
+>>>>>>> .r1430
     """
     Encodes a nested structure into a flat dictionary.
     """
@@ -118,15 +122,16 @@
                 name = key
             else:
                 name = "%s%s%s" % (prepend, dict_char, key)
-            variable_encode(value, name, result)
+            variable_encode(value, name, result, add_repetitions)
     elif isinstance(d, list):
         for i in range(len(d)):
             variable_encode(d[i], "%s%s%i" % (prepend, list_char, i), result)
-        if prepend:
-            repName = '%s--repetitions' % prepend
-        else:
-            repName = '__repetitions__'
-        result[repName] = str(len(d))
+        if add_repetitions:
+            if prepend:
+                repName = '%s--repetitions' % prepend
+            else:
+                repName = '__repetitions__'
+            result[repName] = str(len(d))
     else:
         result[prepend] = d
     return result



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
FormEncode-CVS mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/formencode-cvs

Reply via email to