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

pipeBusSource.py 1.1KB

11 months ago
1234567891011121314151617181920212223242526
  1. from generation.isNotKeyword import *
  2. def pipeSource(name, entity, structure, fmtBusPipe, fmtBusPipeToggle):
  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. src = pipeSourceBus(
  19. busKey = src
  20. busValueType = structure.model.fields[name][0]
  21. src = "Bus.events.compactMap { Bus.convertKeyValue(" + busKey + ", $0) }.map { (k: String, v: " + busValueType + ") in v }"
  22. # Значение по умолчанию.
  23. elif src == default:
  24. return default + "." + name
  25. return src