Проверка шаблона шины для iOS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pipeSource.py 1.1KB

11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12345678910111213141516171819202122232425
  1. from generation.isNotKeyword import *
  2. def pipeSource(name, entity, structure):
  3. props = entity.pipes[name]
  4. if "vm" in props:
  5. return "core.vm." + name
  6. elif "$vm" in props:
  7. return "core.vm.$" + name
  8. else:
  9. # Если это что-то неизвестное заранее, то ищем строку,
  10. # отличную от известных ключевых слов для инструкции pipe.
  11. default = "world"
  12. src = next(filter(isNotKeyword, props), default)
  13. # Прямое обращение к VM.
  14. if src.startswith("vm."):
  15. src = "core." + src
  16. # Обращение к константе шины.
  17. elif src.startswith("K."):
  18. busKey = src
  19. busValueType = structure.model.fields[name][0]
  20. src = f"Bus.events.compactMap { Bus.convertKeyValue({busKey}.rawValue, \$0) }.map { (k: String, v: {busValueType}) in v }.eraseToAnyPublisher()"
  21. # Значение по умолчанию.
  22. elif src == default:
  23. return default + "." + name
  24. return src