@@ -2,30 +2,45 @@ package org.jetbrains.kotlinx.jupyter.api.libraries
2
2
3
3
import org.jetbrains.kotlinx.jupyter.api.AfterCellExecutionCallback
4
4
import org.jetbrains.kotlinx.jupyter.api.ClassAnnotationHandler
5
+ import org.jetbrains.kotlinx.jupyter.api.CodePreprocessor
5
6
import org.jetbrains.kotlinx.jupyter.api.ExecutionCallback
6
7
import org.jetbrains.kotlinx.jupyter.api.FieldHandler
7
8
import org.jetbrains.kotlinx.jupyter.api.FileAnnotationHandler
8
9
import org.jetbrains.kotlinx.jupyter.api.KotlinKernelVersion
9
10
import org.jetbrains.kotlinx.jupyter.api.RendererTypeHandler
10
11
11
12
/* *
12
- * Trivial implementation of [LibraryDefinition].
13
- * You may use it in simple cases instead of overriding [LibraryDefinition]
14
- * to avoid additional anonymous classes creation
13
+ * Trivial implementation of [LibraryDefinition] - simple container.
15
14
*/
16
- class LibraryDefinitionImpl (
17
- override val dependencies : List <String > = emptyList(),
18
- override val repositories : List <String > = emptyList(),
19
- override val imports : List <String > = emptyList(),
20
- override val init : List <ExecutionCallback <* >> = emptyList(),
21
- override val initCell : List <ExecutionCallback <* >> = emptyList(),
22
- override val afterCellExecution : List <AfterCellExecutionCallback > = emptyList(),
23
- override val shutdown : List <ExecutionCallback <* >> = emptyList(),
24
- override val renderers : List <RendererTypeHandler > = emptyList(),
25
- override val converters : List <FieldHandler > = emptyList(),
26
- override val classAnnotations : List <ClassAnnotationHandler > = emptyList(),
27
- override val fileAnnotations : List <FileAnnotationHandler > = emptyList(),
28
- override val resources : List <LibraryResource > = emptyList(),
29
- override val minKernelVersion : KotlinKernelVersion ? = null ,
30
- override val originalDescriptorText : String? = null ,
31
- ) : LibraryDefinition
15
+ class LibraryDefinitionImpl private constructor() : LibraryDefinition {
16
+ override var dependencies: List <String > = emptyList()
17
+ override var repositories: List <String > = emptyList()
18
+ override var imports: List <String > = emptyList()
19
+ override var init : List <ExecutionCallback <* >> = emptyList()
20
+ override var initCell: List <ExecutionCallback <* >> = emptyList()
21
+ override var afterCellExecution: List <AfterCellExecutionCallback > = emptyList()
22
+ override var shutdown: List <ExecutionCallback <* >> = emptyList()
23
+ override var renderers: List <RendererTypeHandler > = emptyList()
24
+ override var converters: List <FieldHandler > = emptyList()
25
+ override var classAnnotations: List <ClassAnnotationHandler > = emptyList()
26
+ override var fileAnnotations: List <FileAnnotationHandler > = emptyList()
27
+ override var resources: List <LibraryResource > = emptyList()
28
+ override var codePreprocessors: List <CodePreprocessor > = emptyList()
29
+ override var minKernelVersion: KotlinKernelVersion ? = null
30
+ override var originalDescriptorText: String? = null
31
+
32
+ companion object {
33
+ internal fun build (buildAction : (LibraryDefinitionImpl ) -> Unit ): LibraryDefinition {
34
+ return LibraryDefinitionImpl ().also (buildAction)
35
+ }
36
+ }
37
+ }
38
+
39
+ /* *
40
+ * Builds an instance of [LibraryDefinition].
41
+ * Build action receives [LibraryDefinitionImpl] as an explicit argument
42
+ * because of problems with names clashing that may arise.
43
+ */
44
+ fun libraryDefinition (buildAction : (LibraryDefinitionImpl ) -> Unit ): LibraryDefinition {
45
+ return LibraryDefinitionImpl .build(buildAction)
46
+ }
0 commit comments