from generation.isNotKeyword import * def pipeSource(name, entity, structure): 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."): busKey = src busValueType = structure.model.fields[name][0] src = f"Bus.events.compactMap { Bus.convertKeyValue({busKey}.rawValue, \$0) }.map { (k: String, v: {busValueType}) in v }.eraseToAnyPublisher()" # Значение по умолчанию. elif src == default: return default + "." + name return src