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

kotlin.script.experimental.util.linkedSnippet.kt Maven / Gradle / Ivy

There is a newer version: 2.1.0-RC
Show newest version
/*
 * 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)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy