Make default values not be serialized to XML
authorNick Downing <nick@ndcode.org>
Mon, 28 Jan 2019 10:05:43 +0000 (21:05 +1100)
committerNick Downing <nick@ndcode.org>
Mon, 28 Jan 2019 10:32:29 +0000 (21:32 +1100)
pitree.t

index 9009ccd..242eaef 100644 (file)
--- a/pitree.t
+++ b/pitree.t
@@ -213,10 +213,39 @@ def generate_class_or_field_def(self, context):
       )
     )
     indent_save2 = context.indent
-    context.indent += '      '
+    context.indent += '        '
     for i in context.fields[n_base_fields:]:
       context.field_name = i[1].get_text()
       context.fout.write(
+        '''{0:s}  if self.{1:s} == {2:s}:
+{3:s}    self.attrib.pop('{4:s}', None)
+{5:s}  else:
+{6:s}    self.set(
+{7:s}      '{8:s}',
+{9:s}      json.dumps(
+{10:s}        {11:s}
+{12:s}      )
+{13:s}    )
+'''.format(
+          indent_save2,
+          context.field_name,
+          i[2][0].generate_expression(i[0]),
+          indent_save2,
+          context.field_name,
+          indent_save2,
+          indent_save2,
+          indent_save2,
+          context.field_name,
+          indent_save2,
+          indent_save2,
+          i[0].generate_serialize(
+            context,
+            'self.{0:s}'.format(context.field_name)
+          ),
+          indent_save2,
+          indent_save2
+        )
+      if len(i[2]) else
         '''{0:s}  self.set(
 {1:s}    '{2:s}',
 {3:s}    json.dumps(