|
|
@@ -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) |