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

26 lines
1.1KB

  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 = "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