@@ -995,7 +995,10 @@ def process_register(self, rspec, register, update_fields=True):
995
995
rcount += 1
996
996
# Handle deletions
997
997
for fspec in register .get ("_delete" , []):
998
- r .delete (fspec )
998
+ r .delete_field (fspec )
999
+ # Handle field clearing
1000
+ for fspec in register .get ("_clear" , []):
1001
+ r .clear_field (fspec )
999
1002
# Handle modifications
1000
1003
for fspec in register .get ("_modify" , []):
1001
1004
fmod = register ["_modify" ][fspec ]
@@ -1108,11 +1111,19 @@ def add_field(self, fname, fadd):
1108
1111
ET .SubElement (fnew , key ).text = str (value )
1109
1112
fnew .tail = "\n "
1110
1113
1111
- def delete (self , fspec ):
1114
+ def delete_field (self , fspec ):
1112
1115
"""Delete fields matched by fspec inside rtag."""
1113
1116
for ftag in list (self .iter_fields (fspec )):
1114
1117
self .rtag .find ("fields" ).remove (ftag )
1115
1118
1119
+ def clear_field (self , fspec ):
1120
+ """Clear contents of fields matched by fspec inside rtag."""
1121
+ for ftag in list (self .iter_fields (fspec )):
1122
+ for tag in ftag .findall ("enumeratedValues" ):
1123
+ ftag .remove (tag )
1124
+ for tag in ftag .findall ("writeConstraint" ):
1125
+ ftag .remove (tag )
1126
+
1116
1127
def merge_fields (self , fspec ):
1117
1128
"""Merge all fspec in rtag."""
1118
1129
fields = list (self .iter_fields (fspec ))
0 commit comments