All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlinx.jupyter.compiler.util.serializedCompiledScript.kt Maven / Gradle / Ivy

Go to download

Implementation of REPL compiler and preprocessor for Jupyter dialect of Kotlin (IDE-compatible)

There is a newer version: 0.12.0-290
Show newest version
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()
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy