1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-03 00:15:27 +00:00
tgbotapi/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/EntitiesBuilder.kt

146 lines
6.0 KiB
Kotlin
Raw Normal View History

@file:Suppress("NOTHING_TO_INLINE", "unused")
2020-11-09 09:12:57 +00:00
2020-11-08 15:19:26 +00:00
package dev.inmo.tgbotapi.extensions.utils.formatting
2021-06-03 17:34:11 +00:00
import dev.inmo.tgbotapi.types.MessageEntity.textsources.*
2020-11-08 15:19:26 +00:00
import dev.inmo.tgbotapi.types.User
2021-05-29 09:34:14 +00:00
fun buildEntities(init: EntitiesBuilder.() -> Unit): TextSourcesList = EntitiesBuilder().apply(init).build()
2020-11-08 15:19:26 +00:00
2020-11-09 09:12:57 +00:00
/**
* This builder can be used to provide building of [TextSource]s [List]
*
* @see buildEntities
*/
2020-11-08 15:19:26 +00:00
class EntitiesBuilder internal constructor(
2021-05-29 09:34:14 +00:00
private val entitiesList: MutableTextSourcesList = mutableListOf()
2020-11-08 15:19:26 +00:00
) {
2020-11-09 09:12:57 +00:00
/**
* It is not safe field which contains potentially changeable [List]
*/
2021-05-29 09:34:14 +00:00
val entities: TextSourcesList
2020-11-09 09:12:57 +00:00
get() = entitiesList
2020-11-08 15:19:26 +00:00
2020-11-09 09:12:57 +00:00
/**
* @return New immutable list which will be deattached from this builder
*/
2021-05-29 09:34:14 +00:00
fun build(): TextSourcesList = entities.toList()
2020-11-09 09:12:57 +00:00
2021-06-03 17:34:11 +00:00
fun add(source: TextSource) {
entitiesList.add(source)
}
2020-11-09 09:12:57 +00:00
2021-06-03 17:34:11 +00:00
operator fun TextSource.unaryPlus() = add(this)
2021-05-29 09:34:14 +00:00
operator fun TextSourcesList.unaryPlus() = entitiesList.addAll(this)
2021-06-03 17:34:11 +00:00
operator fun invoke(vararg source: TextSource) = entitiesList.addAll(source)
2020-11-08 15:19:26 +00:00
operator fun String.unaryPlus() {
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.regular(this))
}
}
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.bold(parts: TextSourcesList) = add(dev.inmo.tgbotapi.types.MessageEntity.textsources.bold(parts))
2020-11-08 15:19:26 +00:00
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.bold(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.bold(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.bold(text: String) = add(dev.inmo.tgbotapi.types.MessageEntity.textsources.bold(text))
2020-11-08 15:19:26 +00:00
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.botCommand(command: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.botCommand(command))
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.cashTag(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.cashTag(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.cashTag(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.cashTag(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.cashTag(text: String) = add(dev.inmo.tgbotapi.types.MessageEntity.textsources.cashTag(text))
2020-11-08 15:19:26 +00:00
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.code(code: String) = add(dev.inmo.tgbotapi.types.MessageEntity.textsources.code(code))
2020-11-08 15:19:26 +00:00
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.email(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.email(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.email(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.email(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.email(emailAddress: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.email(emailAddress))
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.hashtag(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.hashtag(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.hashtag(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.hashtag(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.hashtag(hashtag: String) = add(dev.inmo.tgbotapi.types.MessageEntity.textsources.hashtag(hashtag))
2020-11-08 15:19:26 +00:00
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.italic(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.italic(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.italic(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.italic(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.italic(text: String) = add(dev.inmo.tgbotapi.types.MessageEntity.textsources.italic(text))
2020-11-08 15:19:26 +00:00
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.mention(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.mention(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.mention(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.mention(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.mention(whoToMention: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.mention(whoToMention))
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.mention(parts: TextSourcesList, user: User) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.mention(parts, user))
inline fun EntitiesBuilder.mention(
user: User,
2021-06-03 17:34:11 +00:00
vararg parts: TextSource
) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.mention(user, *parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.mention(text: String, user: User) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.mention(text, user))
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.phone(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.phone(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.phone(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.phone(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.phone(number: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.phone(number))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.pre(code: String, language: String?) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.pre(code, language))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.regular(text: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.regular(text))
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.strikethrough(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.strikethrough(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.strikethrough(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.strikethrough(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.strikethrough(text: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.strikethrough(text))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.link(text: String, url: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.link(text, url))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.link(url: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.link(url))
2021-05-29 09:34:14 +00:00
inline fun EntitiesBuilder.underline(parts: TextSourcesList) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.underline(parts))
2021-06-03 17:34:11 +00:00
inline fun EntitiesBuilder.underline(vararg parts: TextSource) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.underline(*parts))
2020-11-09 09:12:57 +00:00
inline fun EntitiesBuilder.underline(text: String) =
2020-11-08 15:19:26 +00:00
add(dev.inmo.tgbotapi.types.MessageEntity.textsources.underline(text))