This commit is contained in:
Михаил Капелько
2023-12-28 18:30:31 +03:00
parent 56c897bb9e
commit 4dbbcfdc22
5 changed files with 25 additions and 29 deletions

View File

@@ -1,26 +1,10 @@
from generation.isNotKeyword import *
def pipeBusSource(name, entity, busKey, structure, fmtBusPipe, fmtBusPipeToggle):
if "toggle" in entity.pipes[name]:
return fmtBusPipeToggle \
.replace("%BUS_KEY%", busKey) \
.replace("%BUS_VALUE_TYPE%", "Void")
def pipeSource(name, entity, structure, fmtBusPipe, fmtBusPipeToggle):
props = entity.pipes[name]
if "vm" in props:
return "core.vm." + name
elif "$vm" in props:
return "core.vm.$" + name
else:
# Если это что-то неизвестное заранее, то ищем строку,
# отличную от известных ключевых слов для инструкции pipe.
default = "world"
src = next(filter(isNotKeyword, props), default)
# Прямое обращение к VM.
if src.startswith("vm."):
src = "core." + src
# Обращение к константе шины.
elif src.startswith("K."):
src = pipeSourceBus(
busKey = src
busValueType = structure.model.fields[name][0]
src = "Bus.events.compactMap { Bus.convertKeyValue(" + busKey + ", $0) }.map { (k: String, v: " + busValueType + ") in v }"
# Значение по умолчанию.
elif src == default:
return default + "." + name
return src
valueType = structure.model.fields[name][0]
return fmtBusPipe \
.replace("%BUS_KEY%", busKey) \
.replace("%BUS_VALUE_TYPE%", valueType)