Make separator character configurable

This commit is contained in:
Daniel Rojas 2020-11-17 09:33:21 +01:00
parent 45a45dc69e
commit 0d1e3d715d

View File

@ -75,9 +75,13 @@ def parse(yaml_input: str, file_out: (str, Path) = None, return_types: (None, st
# go through connection sets, generate and connect components ==============
def resolve_designator(inp):
if '.' in inp: # generate a new instance of an item
template, designator = inp.split('.') # TODO: handle more than one `.`
template_separator_char = '.' # TODO: make user-configurable (in case user wants to use `.` as part of their template/component names)
def resolve_designator(inp, separator):
if separator in inp: # generate a new instance of an item
if inp.count(separator) > 1:
raise Exception(f'{inp} - Found more than one separator ({separator})')
template, designator = inp.split(separator)
if designator == '':
autogenerated_designators[template] = autogenerated_designators.get(template, 0) + 1
designator = f'__{template}_{autogenerated_designators[template]}'
@ -148,11 +152,11 @@ def parse(yaml_input: str, file_out: (str, Path) = None, return_types: (None, st
for index, entry in enumerate(connection_set):
if isinstance(entry, list):
for subindex, item in enumerate(entry):
template, designator = resolve_designator(item)
template, designator = resolve_designator(item, template_separator_char)
connection_set[index][subindex] = designator
elif isinstance(entry, dict):
key = list(entry.keys())[0]
template, designator = resolve_designator(key)
template, designator = resolve_designator(key, template_separator_char)
value = entry[key]
connection_set[index] = {designator: value}
else: