1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-03 00:15:27 +00:00

textSources now is main property

This commit is contained in:
InsanusMokrassar 2021-04-27 16:08:36 +06:00
parent 70f96ac8fa
commit eb3f180cc6
13 changed files with 27 additions and 34 deletions

View File

@ -6,6 +6,8 @@
* `SendInvoice#startParameter` becomes optional and replaced in `SendInvoice` constructor * `SendInvoice#startParameter` becomes optional and replaced in `SendInvoice` constructor
* Fields `SendInvoice#maxTipAmount` and `SendInvoice#suggestedTipAmounts` have been added * Fields `SendInvoice#maxTipAmount` and `SendInvoice#suggestedTipAmounts` have been added
* New type `InputInvoiceMessageContent` has been added * New type `InputInvoiceMessageContent` has been added
* `textSources` become main field in `TextedInput`
* `textEntities` become are calculable property in `TextedInput`
## 0.33.4 ## 0.33.4

View File

@ -20,10 +20,3 @@ interface CaptionedInput : Captioned, TextedInput {
val captionEntities: List<TextPart> val captionEntities: List<TextPart>
get() = textEntities get() = textEntities
} }
/**
* @see CaptionedInput.captionEntities
* @see justTextSources
*/
val CaptionedInput.textSources
get() = captionEntities.justTextSources()

View File

@ -1,5 +1,6 @@
package dev.inmo.tgbotapi.CommonAbstracts package dev.inmo.tgbotapi.CommonAbstracts
import dev.inmo.tgbotapi.types.MessageEntity.toTextParts
import dev.inmo.tgbotapi.types.ParseMode.ParseMode import dev.inmo.tgbotapi.types.ParseMode.ParseMode
interface Texted { interface Texted {
@ -17,19 +18,17 @@ interface EntitiesOutput : Texted {
interface TextedOutput : ParsableOutput, EntitiesOutput interface TextedOutput : ParsableOutput, EntitiesOutput
interface TextedInput : Texted { interface TextedInput : Texted {
/**
* Full list of [TextSource] built from source[TextedInput.textEntities]
*
* @see justTextSources
*/
val textSources: List<TextSource>
/** /**
* Here must be full list of entities. This list must contains [TextPart]s with * Here must be full list of entities. This list must contains [TextPart]s with
* [dev.inmo.tgbotapi.types.MessageEntity.textsources.RegularTextSource] in case if source text contains parts of * [dev.inmo.tgbotapi.types.MessageEntity.textsources.RegularTextSource] in case if source text contains parts of
* regular text * regular text
*/ */
val textEntities: List<TextPart> val textEntities: List<TextPart>
get() = textSources.toTextParts()
} }
/**
* Full list of [TextSource] built from source[TextedInput.textEntities]
*
* @see TextedInput.textEntities
* @see justTextSources
*/
val TextedInput.textSources
get() = textEntities.justTextSources()

View File

@ -9,6 +9,6 @@ data class Game(
val description: String, val description: String,
val photo: Photo, val photo: Photo,
override val text: String? = null, override val text: String? = null,
override val textEntities: List<TextPart> = emptyList(), override val textSources: TextSourcesList = emptyList(),
val animation: AnimationFile? = null val animation: AnimationFile? = null
) : Titled, CaptionedInput, TextedInput ) : Titled, CaptionedInput, TextedInput

View File

@ -1,5 +1,6 @@
package dev.inmo.tgbotapi.types.games package dev.inmo.tgbotapi.types.games
import dev.inmo.tgbotapi.CommonAbstracts.justTextSources
import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.MessageEntity.RawMessageEntities import dev.inmo.tgbotapi.types.MessageEntity.RawMessageEntities
import dev.inmo.tgbotapi.types.MessageEntity.asTextParts import dev.inmo.tgbotapi.types.MessageEntity.asTextParts
@ -28,7 +29,7 @@ internal data class RawGame(
description, description,
photo, photo,
text, text,
text ?.let { _ -> textEntities.asTextParts(text) } ?: emptyList(), text ?.let { _ -> textEntities.asTextParts(text).justTextSources() } ?: emptyList(),
animation animation
) )
} }

View File

@ -1,5 +1,6 @@
package dev.inmo.tgbotapi.types.message package dev.inmo.tgbotapi.types.message
import dev.inmo.tgbotapi.CommonAbstracts.justTextSources
import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.MessageEntity.RawMessageEntities import dev.inmo.tgbotapi.types.MessageEntity.RawMessageEntities
import dev.inmo.tgbotapi.types.MessageEntity.asTextParts import dev.inmo.tgbotapi.types.MessageEntity.asTextParts
@ -102,11 +103,11 @@ internal data class RawMessage(
) { ) {
private val content: MessageContent? by lazy { private val content: MessageContent? by lazy {
val adaptedCaptionEntities = caption ?.let { val adaptedCaptionEntities = caption ?.let {
(caption_entities ?: emptyList()).asTextParts(caption) (caption_entities ?: emptyList()).asTextParts(caption).justTextSources()
} ?: emptyList() } ?: emptyList()
when { when {
text != null -> TextContent(text, (entities ?: emptyList()).asTextParts(text)) text != null -> TextContent(text, (entities ?: emptyList()).asTextParts(text).justTextSources())
audio != null -> AudioContent( audio != null -> AudioContent(
audio, audio,
caption, caption,

View File

@ -13,7 +13,7 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent
data class TextContent( data class TextContent(
override val text: String, override val text: String,
override val textEntities: List<TextPart> = emptyList() override val textSources: TextSourcesList = emptyList(),
) : MessageContent, TextedInput { ) : MessageContent, TextedInput {
override fun createResend( override fun createResend(
chatId: ChatIdentifier, chatId: ChatIdentifier,

View File

@ -16,7 +16,7 @@ data class AnimationContent(
override val media: AnimationFile, override val media: AnimationFile,
val includedDocument: DocumentFile?, val includedDocument: DocumentFile?,
override val text: String?, override val text: String?,
override val textEntities: List<TextPart> override val textSources: TextSourcesList = emptyList()
) : MediaContent, CaptionedInput, TextedInput { ) : MediaContent, CaptionedInput, TextedInput {
override fun createResend( override fun createResend(
chatId: ChatIdentifier, chatId: ChatIdentifier,

View File

@ -1,7 +1,6 @@
package dev.inmo.tgbotapi.types.message.content.media package dev.inmo.tgbotapi.types.message.content.media
import dev.inmo.tgbotapi.CommonAbstracts.TextPart import dev.inmo.tgbotapi.CommonAbstracts.*
import dev.inmo.tgbotapi.CommonAbstracts.textSources
import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.abstracts.Request
import dev.inmo.tgbotapi.requests.send.media.SendAudio import dev.inmo.tgbotapi.requests.send.media.SendAudio
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier
@ -16,7 +15,7 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.AudioMediaGroupContent
data class AudioContent( data class AudioContent(
override val media: AudioFile, override val media: AudioFile,
override val text: String? = null, override val text: String? = null,
override val textEntities: List<TextPart> = emptyList() override val textSources: TextSourcesList = emptyList()
) : AudioMediaGroupContent { ) : AudioMediaGroupContent {
override fun createResend( override fun createResend(
chatId: ChatIdentifier, chatId: ChatIdentifier,

View File

@ -17,7 +17,7 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent
data class DocumentContent( data class DocumentContent(
override val media: DocumentFile, override val media: DocumentFile,
override val text: String? = null, override val text: String? = null,
override val textEntities: List<TextPart> = emptyList() override val textSources: TextSourcesList = emptyList()
) : DocumentMediaGroupContent { ) : DocumentMediaGroupContent {
override fun createResend( override fun createResend(
chatId: ChatIdentifier, chatId: ChatIdentifier,
@ -46,7 +46,7 @@ inline fun MediaContent.asDocumentContent() = when (this) {
is TextedInput -> DocumentContent( is TextedInput -> DocumentContent(
media.asDocumentFile(), media.asDocumentFile(),
text, text,
textEntities textSources
) )
else -> DocumentContent( else -> DocumentContent(
media.asDocumentFile() media.asDocumentFile()

View File

@ -1,7 +1,6 @@
package dev.inmo.tgbotapi.types.message.content.media package dev.inmo.tgbotapi.types.message.content.media
import dev.inmo.tgbotapi.CommonAbstracts.TextPart import dev.inmo.tgbotapi.CommonAbstracts.*
import dev.inmo.tgbotapi.CommonAbstracts.textSources
import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.abstracts.Request
import dev.inmo.tgbotapi.requests.send.media.SendPhoto import dev.inmo.tgbotapi.requests.send.media.SendPhoto
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier
@ -17,7 +16,7 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.VisualMediaGroupContent
data class PhotoContent( data class PhotoContent(
override val mediaCollection: Photo, override val mediaCollection: Photo,
override val text: String? = null, override val text: String? = null,
override val textEntities: List<TextPart> = emptyList() override val textSources: TextSourcesList = emptyList()
) : MediaCollectionContent<PhotoSize>, VisualMediaGroupContent { ) : MediaCollectionContent<PhotoSize>, VisualMediaGroupContent {
override val media: PhotoSize = mediaCollection.biggest() ?: throw IllegalStateException("Can't locate any photo size for this content") override val media: PhotoSize = mediaCollection.biggest() ?: throw IllegalStateException("Can't locate any photo size for this content")

View File

@ -1,7 +1,6 @@
package dev.inmo.tgbotapi.types.message.content.media package dev.inmo.tgbotapi.types.message.content.media
import dev.inmo.tgbotapi.CommonAbstracts.TextPart import dev.inmo.tgbotapi.CommonAbstracts.*
import dev.inmo.tgbotapi.CommonAbstracts.textSources
import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.abstracts.Request
import dev.inmo.tgbotapi.requests.send.media.SendVideo import dev.inmo.tgbotapi.requests.send.media.SendVideo
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier
@ -16,7 +15,7 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.VisualMediaGroupContent
data class VideoContent( data class VideoContent(
override val media: VideoFile, override val media: VideoFile,
override val text: String? = null, override val text: String? = null,
override val textEntities: List<TextPart> = emptyList() override val textSources: TextSourcesList = emptyList()
) : VisualMediaGroupContent { ) : VisualMediaGroupContent {
override fun createResend( override fun createResend(
chatId: ChatIdentifier, chatId: ChatIdentifier,

View File

@ -14,7 +14,7 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent
data class VoiceContent( data class VoiceContent(
override val media: VoiceFile, override val media: VoiceFile,
override val text: String? = null, override val text: String? = null,
override val textEntities: List<TextPart> = emptyList() override val textSources: TextSourcesList = emptyList()
) : MediaContent, CaptionedInput, TextedInput { ) : MediaContent, CaptionedInput, TextedInput {
override fun createResend( override fun createResend(
chatId: ChatIdentifier, chatId: ChatIdentifier,