kotlin.text.StringBuilder.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
@file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("StringsKt")
package kotlin.text
/**
* Builds new string by populating newly created [StringBuilder] using provided [builderAction]
* and then converting it to [String].
*/
@kotlin.internal.InlineOnly
public inline fun buildString(builderAction: StringBuilder.() -> Unit): String =
StringBuilder().apply(builderAction).toString()
/**
* Builds new string by populating newly created [StringBuilder] initialized with the given [capacity]
* using provided [builderAction] and then converting it to [String].
*/
@SinceKotlin("1.1")
@kotlin.internal.InlineOnly
public inline fun buildString(capacity: Int, builderAction: StringBuilder.() -> Unit): String =
StringBuilder(capacity).apply(builderAction).toString()
/**
* Appends all arguments to the given [Appendable].
*/
public fun T.append(vararg value: CharSequence?): T {
for (item in value)
append(item)
return this
}
/**
* Appends all arguments to the given StringBuilder.
*/
public fun StringBuilder.append(vararg value: String?): StringBuilder {
for (item in value)
append(item)
return this
}
/**
* Appends all arguments to the given StringBuilder.
*/
public fun StringBuilder.append(vararg value: Any?): StringBuilder {
for (item in value)
append(item)
return this
}
internal fun Appendable.appendElement(element: T, transform: ((T) -> CharSequence)?) {
when {
transform != null -> append(transform(element))
element is CharSequence? -> append(element)
element is Char -> append(element)
else -> append(element.toString())
}
}