mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-22 16:23:48 +00:00
RegularTextMessageEntity and convertToFullMessageEntityList
This commit is contained in:
parent
2af4ebcd44
commit
81029db165
@ -14,6 +14,9 @@
|
|||||||
|
|
||||||
* Updated built-in lengths restrictions
|
* Updated built-in lengths restrictions
|
||||||
* Apply restrictions of text limit for sending messages
|
* Apply restrictions of text limit for sending messages
|
||||||
|
* Add `RegularTextMessageEntity` which is useful for representing regular text message entity
|
||||||
|
* Add `convertToFullMessageEntityList` which create list of entities with `RegularTextMessageEntity` on places where
|
||||||
|
must be regular text
|
||||||
|
|
||||||
### 0.8.5
|
### 0.8.5
|
||||||
|
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
||||||
|
|
||||||
|
data class RegularTextMessageEntity(
|
||||||
|
override val offset: Int,
|
||||||
|
override val length: Int,
|
||||||
|
override val sourceString: String
|
||||||
|
) : MessageEntity
|
@ -1,6 +1,7 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.utils
|
package com.github.insanusmokrassar.TelegramBotAPI.utils
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEntity
|
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEntity
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.RegularTextMessageEntity
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.CaptionedMediaContent
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.CaptionedMediaContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toMarkdown
|
||||||
@ -9,21 +10,7 @@ fun createMarkdownText(
|
|||||||
text: String,
|
text: String,
|
||||||
messageEntities: List<MessageEntity>
|
messageEntities: List<MessageEntity>
|
||||||
): String {
|
): String {
|
||||||
val builder = StringBuilder()
|
return convertToFullMessageEntityList(text, messageEntities).joinToString("", "", "") { it.asMarkdownSource }
|
||||||
var offset = 0
|
|
||||||
for (entity in messageEntities) {
|
|
||||||
builder.append(
|
|
||||||
text.substring(offset until entity.offset).toMarkdown()
|
|
||||||
)
|
|
||||||
builder.append(
|
|
||||||
entity.asMarkdownSource
|
|
||||||
)
|
|
||||||
offset += entity.length
|
|
||||||
}
|
|
||||||
builder.append(
|
|
||||||
text.substring(offset).toMarkdown()
|
|
||||||
)
|
|
||||||
return builder.toString()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun CaptionedMediaContent.toMarkdownCaption(): String? = caption ?.let {
|
fun CaptionedMediaContent.toMarkdownCaption(): String? = caption ?.let {
|
||||||
@ -33,7 +20,37 @@ fun CaptionedMediaContent.toMarkdownCaption(): String? = caption ?.let {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun CaptionedMediaContent.fullEntitiesList(): List<MessageEntity> = caption ?.let {
|
||||||
|
convertToFullMessageEntityList(it, captionEntities)
|
||||||
|
} ?: emptyList()
|
||||||
|
|
||||||
fun TextContent.toMarkdownText(): String = createMarkdownText(
|
fun TextContent.toMarkdownText(): String = createMarkdownText(
|
||||||
text,
|
text,
|
||||||
entities
|
entities
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fun TextContent.fullEntitiesList(): List<MessageEntity> = convertToFullMessageEntityList(text, entities)
|
||||||
|
|
||||||
|
fun convertToFullMessageEntityList(
|
||||||
|
text: String,
|
||||||
|
messageEntities: List<MessageEntity>
|
||||||
|
): List<MessageEntity> {
|
||||||
|
val result = mutableListOf<MessageEntity>()
|
||||||
|
|
||||||
|
var offset = 0
|
||||||
|
for (entity in messageEntities) {
|
||||||
|
val newEntitySize = entity.offset - offset
|
||||||
|
if (newEntitySize > 0) {
|
||||||
|
val regularEntity = RegularTextMessageEntity(offset, newEntitySize, text.substring(offset, entity.offset))
|
||||||
|
result.add(regularEntity)
|
||||||
|
offset += regularEntity.length
|
||||||
|
}
|
||||||
|
result.add(entity)
|
||||||
|
offset += entity.length
|
||||||
|
}
|
||||||
|
val newEntitySize = text.length - offset
|
||||||
|
if (newEntitySize > 0) {
|
||||||
|
result.add(RegularTextMessageEntity(offset, newEntitySize, text.substring(offset, text.length)))
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user