Skip to content

Commit ca927b3

Browse files
bors[bot]burrbull
andauthored
Merge #57
57: clear_field r=adamgreig a=burrbull Co-authored-by: Andrey Zgarbul <zgarbul.andrey@gmail.com>
2 parents 0b5ec50 + 7ffd47f commit ca927b3

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## [Unreleased]
44

5+
* Add `_clear` for deleting all `enumeratedValues` from field
6+
57
## [v0.1.13] 2021-04-16
68

79
* Fix use of `vendorExtensions` tag in SVD files (#53)

svdtools/patch.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -995,7 +995,10 @@ def process_register(self, rspec, register, update_fields=True):
995995
rcount += 1
996996
# Handle deletions
997997
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)
9991002
# Handle modifications
10001003
for fspec in register.get("_modify", []):
10011004
fmod = register["_modify"][fspec]
@@ -1108,11 +1111,19 @@ def add_field(self, fname, fadd):
11081111
ET.SubElement(fnew, key).text = str(value)
11091112
fnew.tail = "\n "
11101113

1111-
def delete(self, fspec):
1114+
def delete_field(self, fspec):
11121115
"""Delete fields matched by fspec inside rtag."""
11131116
for ftag in list(self.iter_fields(fspec)):
11141117
self.rtag.find("fields").remove(ftag)
11151118

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+
11161127
def merge_fields(self, fspec):
11171128
"""Merge all fspec in rtag."""
11181129
fields = list(self.iter_fields(fspec))

0 commit comments

Comments
 (0)