Skip to content

Commit 405015b

Browse files
committed
Implement HSD-wrappers to manipulate nested content
1 parent 0d97116 commit 405015b

File tree

6 files changed

+644
-20
lines changed

6 files changed

+644
-20
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
*~
22
.idea
3+
.env
4+
.vscode
35
*.pyc
46
dist
57
build

src/hsd/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
"""
88
Toolbox for reading, writing and manipulating HSD-data.
99
"""
10-
from hsd.common import HSD_ATTRIB_LINE, HSD_ATTRIB_EQUAL, HSD_ATTRIB_SUFFIX,\
11-
HSD_ATTRIB_NAME, HsdError
12-
from hsd.dict import HsdDictBuilder, HsdDictWalker
10+
from hsd.common import HSD_ATTRIB_LINE, HSD_ATTRIB_EQUAL, HSD_ATTRIB_NAME, HsdError
11+
from hsd.dict import ATTRIB_KEY_SUFFIX, HSD_ATTRIB_KEY_SUFFIX, HsdDictBuilder, HsdDictWalker
1312
from hsd.eventhandler import HsdEventHandler, HsdEventPrinter
1413
from hsd.formatter import HsdFormatter
1514
from hsd.io import load, load_string, dump, dump_string
1615
from hsd.parser import HsdParser
16+
from hsd.wrappers import HsdDict, HsdList, HsdValue
1717

1818
__version__ = '0.1'

src/hsd/common.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@ def unquote(txt):
2828
# Name for default attribute (when attribute name is not specified)
2929
DEFAULT_ATTRIBUTE = "unit"
3030

31-
# Suffix to mark attribute
32-
ATTRIB_SUFFIX = ".attrib"
33-
34-
# Suffix to mark hsd processing attributes
35-
HSD_ATTRIB_SUFFIX = ".hsdattrib"
36-
3731
# HSD attribute containing the original tag name
3832
HSD_ATTRIB_NAME = "name"
3933

src/hsd/dict.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,17 @@
99
"""
1010
import re
1111
from typing import List, Tuple, Union
12-
from hsd.common import HSD_ATTRIB_NAME, np, ATTRIB_SUFFIX, HSD_ATTRIB_SUFFIX, HsdError,\
13-
QUOTING_CHARS, SPECIAL_CHARS
12+
from hsd.common import HSD_ATTRIB_NAME, np, HsdError, QUOTING_CHARS, SPECIAL_CHARS
1413
from hsd.eventhandler import HsdEventHandler, HsdEventPrinter
1514

15+
16+
# Dictionary key suffix to mark attribute
17+
ATTRIB_KEY_SUFFIX = ".attrib"
18+
19+
# Dictionary keysuffix to mark hsd processing attributes
20+
HSD_ATTRIB_KEY_SUFFIX = ".hsdattrib"
21+
22+
1623
_ItemType = Union[float, complex, int, bool, str]
1724

1825
_DataType = Union[_ItemType, List[_ItemType]]
@@ -130,26 +137,26 @@ def close_tag(self, tagname):
130137
parentblock[key] = [{None: prevcont}, self._curblock]
131138

132139
if attrib and prevcont is None:
133-
parentblock[key + ATTRIB_SUFFIX] = attrib
140+
parentblock[key + ATTRIB_KEY_SUFFIX] = attrib
134141
elif prevcont is not None:
135-
prevattrib = parentblock.get(key + ATTRIB_SUFFIX)
142+
prevattrib = parentblock.get(key + ATTRIB_KEY_SUFFIX)
136143
if isinstance(prevattrib, list):
137144
prevattrib.append(attrib)
138145
else:
139-
parentblock[key + ATTRIB_SUFFIX] = [prevattrib, attrib]
146+
parentblock[key + ATTRIB_KEY_SUFFIX] = [prevattrib, attrib]
140147

141148
if self._include_hsd_attribs:
142149
if self._lower_tag_names:
143150
hsdattrib = {} if hsdattrib is None else hsdattrib
144151
hsdattrib[HSD_ATTRIB_NAME] = tagname
145152
if prevcont is None:
146-
parentblock[key + HSD_ATTRIB_SUFFIX] = hsdattrib
153+
parentblock[key + HSD_ATTRIB_KEY_SUFFIX] = hsdattrib
147154
else:
148-
prevhsdattrib = parentblock.get(key + HSD_ATTRIB_SUFFIX)
155+
prevhsdattrib = parentblock.get(key + HSD_ATTRIB_KEY_SUFFIX)
149156
if isinstance(prevhsdattrib, list):
150157
prevhsdattrib.append(hsdattrib)
151158
else:
152-
parentblock[key + HSD_ATTRIB_SUFFIX] = [prevhsdattrib, hsdattrib]
159+
parentblock[key + HSD_ATTRIB_KEY_SUFFIX] = [prevhsdattrib, hsdattrib]
153160
self._curblock = parentblock
154161
self._data = None
155162

@@ -219,11 +226,11 @@ def walk(self, dictobj):
219226

220227
for key, value in dictobj.items():
221228

222-
if key.endswith(ATTRIB_SUFFIX) or key.endswith(HSD_ATTRIB_SUFFIX):
229+
if key.endswith(ATTRIB_KEY_SUFFIX) or key.endswith(HSD_ATTRIB_KEY_SUFFIX):
223230
continue
224231

225-
hsdattrib = dictobj.get(key + HSD_ATTRIB_SUFFIX)
226-
attrib = dictobj.get(key + ATTRIB_SUFFIX)
232+
hsdattrib = dictobj.get(key + HSD_ATTRIB_KEY_SUFFIX)
233+
attrib = dictobj.get(key + ATTRIB_KEY_SUFFIX)
227234

228235
if isinstance(value, dict):
229236

0 commit comments

Comments
 (0)