Skip to content

Commit c09852a

Browse files
committed
Fix parsing error of '= {' following an attribute
1 parent 74a40cc commit c09852a

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

src/hsd/dictbuilder.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@
2727

2828

2929
class HsdDictBuilder(HsdEventHandler):
30-
"""Deserializes HSD into nested dictionaries"""
30+
"""Deserializes HSD into nested dictionaries
31+
32+
Note: hsdoptions passed by the generating events are ignored.
33+
"""
3134

3235
def __init__(self, flatten_data=False):
3336
HsdEventHandler.__init__(self)

src/hsd/parser.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def __init__(self, defattrib=common.DEFAULT_ATTRIBUTE, eventhandler=None):
114114
self._inside_option = False # parser inside option specification
115115
self._inside_quote = False # parser inside quotation
116116
self._has_child = False
117-
self._oldbefore = ""
117+
self._oldbefore = "" # buffer for tagname
118118

119119

120120
def feed(self, fobj):
@@ -178,7 +178,9 @@ def _parse(self, line):
178178
elif sign == "=" and not self._inside_option:
179179
# Ignore if followed by "{" (DFTB+ compatibility)
180180
if after.lstrip().startswith("{"):
181-
self._oldbefore = before
181+
# _oldbefore may already contain the tagname, if the
182+
# tagname was followed by an attribute -> append
183+
self._oldbefore += before
182184
else:
183185
self._has_child = True
184186
self._hsdoptions[common.HSDATTR_EQUAL] = True

0 commit comments

Comments
 (0)