Проверка шаблона шины для 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.

25 line
1.0KB

  1. from generation.isNotKeyword import *
  2. def pipeSource(name, entity):
  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. key = src
  19. src = "Bus.events.compactMap { Bus.convertKeyValue(" + key + ".rawValue, $0) }.map { (k: String, v: String) in v }.eraseToAnyPublisher()"
  20. # Значение по умолчанию.
  21. elif src == default:
  22. return default + "." + name
  23. return src