from generation.isNotKeyword import * 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