org.jetbrains.kotlinx.jupyter.compiler.util.serializedCompiledScript.kt Maven / Gradle / Ivy
package org.jetbrains.kotlinx.jupyter.compiler.util
import kotlinx.serialization.Serializable
typealias Classpath = List
@Serializable
data class SerializedCompiledScript(
val fileName: String,
val data: String,
val isImplicitReceiver: Boolean,
)
@Serializable
data class SerializedScriptSource(
val fileName: String,
val text: String,
)
@Serializable
data class SerializedCompiledScriptsData(
val scripts: List,
val sources: List,
) {
companion object {
val EMPTY = buildScriptsData {}
}
class Builder {
private val scripts = mutableListOf()
private val sources = mutableListOf()
fun build() = SerializedCompiledScriptsData(scripts.toList(), sources.toList())
fun clear() {
scripts.clear()
sources.clear()
}
fun addData(newData: SerializedCompiledScriptsData) {
scripts.addAll(newData.scripts)
sources.addAll(newData.sources)
}
fun addCompiledScript(script: SerializedCompiledScript) {
scripts.add(script)
}
fun addSource(source: SerializedScriptSource) {
sources.add(source)
}
}
}
fun buildScriptsData(action: SerializedCompiledScriptsData.Builder.() -> Unit): SerializedCompiledScriptsData {
return SerializedCompiledScriptsData.Builder().apply(action).build()
}
@Serializable
class EvaluatedSnippetMetadata(
val newClasspath: Classpath = emptyList(),
val newSources: Classpath = emptyList(),
val compiledData: SerializedCompiledScriptsData = SerializedCompiledScriptsData.EMPTY,
val newImports: List = emptyList(),
val evaluatedVariablesState: Map = mutableMapOf(),
) {
companion object {
val EMPTY = EvaluatedSnippetMetadata()
}
}