Implement direct bindings to script properties mapping in the JSR-223 implementation

fix infrastructure and codegen parts
This commit is contained in:
Ilya Chernikov
2019-07-02 12:00:58 +02:00
parent 4940f64265
commit cfceeb1e8c
8 changed files with 252 additions and 12 deletions
@@ -0,0 +1,27 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.script.experimental.jvm.util
fun String.toValidJvmIdentifier(): String =
if (isBlank()) "_".repeat(length)
else buildString(length) {
for (ch in this@toValidJvmIdentifier) {
// encoding is taken from https://blogs.oracle.com/jrose/symbolic-freedom-in-the-vm
when (ch) {
'/' -> append("\\|")
'.' -> append("\\,")
';' -> append("\\?")
'$' -> append("\\%")
'<' -> append("\\^")
'>' -> append("\\_")
'[' -> append("\\{")
']' -> append("\\}")
':' -> append("\\!")
'\\' -> append("\\-")
else -> append(ch)
}
}
}