kotlin.script.experimental.util.linkedSnippet.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlin-main-kts Show documentation
Show all versions of kotlin-main-kts Show documentation
Kotlin "main" script definition
/*
* Copyright 2010-2020 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.util
interface LinkedSnippet {
val previous: LinkedSnippet?
fun get(): T
}
fun LinkedSnippet?.toList(): List = toList { it }
fun LinkedSnippet?.toList(mapper: (T) -> R): List {
val res = ArrayList()
var el = this
while (el != null) {
res.add(mapper(el.get()))
el = el.previous
}
res.reverse()
return res
}
fun LinkedSnippet?.get(): T? = this?.get()
class LinkedSnippetImpl(private val _val: T, override val previous: LinkedSnippetImpl?) : LinkedSnippet {
override fun get(): T = _val
}
fun LinkedSnippetImpl?.add(value: T) = LinkedSnippetImpl(value, this)