динамический dsl с использованием kotlin с поддержкой контента

Помогает ли kotlin строить следующие dsl?

test 'test_01' { description " test that a user by name tom is present author : xyz GET /userstore/users/user(name=tom) { verify(/first-name == 'Tom') } } 

в этом dsl следующие статические части

тест, описание, автор, GET, проверьте

но выражение

/ Userstore / пользователей / пользователь (имя = TOM)

должна поддерживаться динамически. Смысл, приложение знает о различных моделях домена, которые можно использовать для синтаксиса «/». IDE (Intellij), должен дать мне помощь по содержанию, когда я его вызову. Например, после GET, если я наберу '/' и вызову ca, он должен предоставить мне следующие параметры

  1. userstore
  2. книжный магазин
  3. зданий и т.д.

Дело в том, что я не знаю этих записей во время разработки. Я могу написать код, который может вернуть эти записи. Мне нужен редактор, чтобы вызвать мой код и получить контент, помогающий кандидатам.

И мне нужно, чтобы сборка отображала ошибки, если выражение сформировано с недопустимыми токенами. Поэтому мне нужно, чтобы редактор продолжал проверять мой код, и когда токен не найден в возвращенном списке кандидатов, должен помечать ошибку в редакторе.

Во-первых, синтаксис вашего примера недействителен Kotlin, поэтому нет, вы не можете построить его как DSL Kotlin. Если бы вы могли изменить синтаксис, чтобы путь хранился в строковом литерале, тогда это было бы верно для Kotlin.

Во-вторых, вы можете создать плагин для IntelliJ IDEA, который обеспечил бы такую ​​поддержку контента и «на лету» для любого языка – Java, Kotlin или что-то еще. Усилия, необходимые для создания такого плагина, не сильно зависят от языка, который вы поддерживаете; использование Kotlin не облегчит создание такого плагина.

Intereting Posts
«Невозможно преобразовать объект типа java.lang.String в тип com.android.projectrc.Listing» при использовании Firebase RecyclerAdapter Что из ключевого слова в котлин Изменить текучесть <Список <Obj1 >> в текущую <Список <Obj2 >> в комнате Элвис «если» оператор в Kotlin как аргумент по умолчанию функции Как решить DexArchiveBuilderException для Gradle? Kotlin для Android. Тост Kotlin Unit Test Всегда проходит при запуске из интерфейса Android Studio Kotlin – извлечение списка родительских объектов предметов в коллекции Вызов функций kotlin, которые являются ключевыми словами в java из java? Вызов подпрограмм в Котлине Конструкторы для типов с использованием обобщенных типов Kotlin / Anko запрещает кнопку закрытия диалогового окна Alert Заполнение ListView из массива в Котлине Не удалось загрузить ошибку класса kotlin.collections.CollectionsKT при попытке синхронизации градиента Котлинская лямбда с несколькими параметрами