Как читать и конвертировать определения Kotlin DSL из текстового файла? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть определения DSL Kotlin в статическом текстовом файле, или пользователь предоставит эти определения DSL в виде текстового содержимого во время выполнения. Как динамически преобразовать этот текстовый контент в определения Kotlin? Так что эта программа может быть понята как экземпляр объекта DSL.

1 Ответ

1 голос
/ 09 апреля 2019

Для этого можно использовать механизм сценариев Kotlin.

Для этого необходимы следующие пакеты:

org.jetbrains.kotlin:kotlin-script-util
org.jetbrains.kotlin:kotlin-compiler-embeddable

Затем необходимо создать файл META-INF/services/javax.script.ScriptEngineFactory со следующим содержимым:

org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngineFactory

После настройки вы можете использовать механизм сценариев для компиляции и запуска сценариев Kotlin из вашего приложения, как в этом небольшом примере:

with(ScriptEngineManager().getEngineByExtension("kts")) {

    val script =
        """
        "Hello World"
        """.trimIndent()


    val scriptResult = eval(script)

    return scriptResult as String

}

См. KotlinПример JSR223 для получения дополнительной информации об использовании механизма сценариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...