From 609a47487409f7d09b828effc6f3d77a8fea884d Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 27 Mar 2019 09:35:37 +0800 Subject: [PATCH] MessageEntity#asHtmlSource --- CHANGELOG.md | 3 ++- .../types/MessageEntity/BoldTextMessageEntity.kt | 3 ++- .../types/MessageEntity/CodeTextMessageEntity.kt | 3 ++- .../types/MessageEntity/EMailMessageEntity.kt | 9 ++++----- .../types/MessageEntity/ItalicTextMessageEntity.kt | 3 ++- .../types/MessageEntity/LinkMessageEntity.kt | 14 ++++++++++++++ .../types/MessageEntity/MentionMessageEntity.kt | 5 +---- .../types/MessageEntity/MessageEntity.kt | 4 ++++ .../types/MessageEntity/PreTextMessageEntity.kt | 3 ++- .../types/MessageEntity/TextLinkMessageEntity.kt | 9 ++++----- .../MessageEntity/TextMentionMessageEntity.kt | 9 ++++----- .../types/MessageEntity/TextMessageEntity.kt | 9 +++++++-- .../types/MessageEntity/URLMessageEntity.kt | 12 +++++------- .../TelegramBotAPI/utils/extensions/String.kt | 14 ++++++++++++++ 14 files changed, 67 insertions(+), 33 deletions(-) create mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/LinkMessageEntity.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index c84508da03..5e1acf9f43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,10 +49,11 @@ media for present out) * `PhotoContent` now choose biggest photo size from its collection as `media` * Fix in order of media group messages which was received by webhooks -### 0.12.4 UpdatesPoller optimisations +### 0.12.4 * Optimized preparing of media group in `UpdatesPoller` * Add `CommonLimiter` +* Add `MessageEntity#asHtmlSource` and `String#toHtml` ## 0.11.0 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/BoldTextMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/BoldTextMessageEntity.kt index 91c92bb650..3944bda314 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/BoldTextMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/BoldTextMessageEntity.kt @@ -5,5 +5,6 @@ data class BoldTextMessageEntity( override val length: Int, override val sourceString: String ) : TextMessageEntity() { - override val formatSymbol: String = "*" + override val markdownFormatSymbol: String = "*" + override val htmlFormatTagname: String = "b" } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/CodeTextMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/CodeTextMessageEntity.kt index 741a0a60d3..19e66daeaa 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/CodeTextMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/CodeTextMessageEntity.kt @@ -5,5 +5,6 @@ data class CodeTextMessageEntity( override val length: Int, override val sourceString: String ) : TextMessageEntity() { - override val formatSymbol: String = "`" + override val markdownFormatSymbol: String = "`" + override val htmlFormatTagname: String = "code" } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/EMailMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/EMailMessageEntity.kt index cdd17c79cb..90f1872575 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/EMailMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/EMailMessageEntity.kt @@ -4,8 +4,7 @@ class EMailMessageEntity( override val offset: Int, override val length: Int, override val sourceString: String -) : MessageEntity { - override val asMarkdownSource: String by lazy { - "[$sourceString](mailto://$sourceString)" - } -} \ No newline at end of file +) : LinkMessageEntity( + sourceString, + "mailto://$sourceString" +) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/ItalicTextMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/ItalicTextMessageEntity.kt index 32e4665b25..4c1f280b6d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/ItalicTextMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/ItalicTextMessageEntity.kt @@ -5,5 +5,6 @@ data class ItalicTextMessageEntity( override val length: Int, override val sourceString: String ) : TextMessageEntity() { - override val formatSymbol: String = "_" + override val markdownFormatSymbol: String = "_" + override val htmlFormatTagname: String = "i" } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/LinkMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/LinkMessageEntity.kt new file mode 100644 index 0000000000..390029d204 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/LinkMessageEntity.kt @@ -0,0 +1,14 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity + +abstract class LinkMessageEntity( + val linkTitle: String, + val link: String +) : MessageEntity { + + override val asMarkdownSource: String by lazy { + "[$linkTitle]($link)" + } + override val asHtmlSource: String by lazy { + "$linkTitle" + } +} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MentionMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MentionMessageEntity.kt index 59e2ae08db..17ba95553d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MentionMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MentionMessageEntity.kt @@ -4,7 +4,4 @@ class MentionMessageEntity( override val offset: Int, override val length: Int, override val sourceString: String -) : MessageEntity { - override val asMarkdownSource: String - get() = sourceString -} \ No newline at end of file +) : MessageEntity diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MessageEntity.kt index 96bfc85cc7..75c09f24bb 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/MessageEntity.kt @@ -1,5 +1,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity +import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toHtml import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toMarkdown interface MessageEntity { @@ -9,4 +10,7 @@ interface MessageEntity { val asMarkdownSource: String get() = sourceString.toMarkdown() + + val asHtmlSource: String + get() = sourceString.toHtml() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/PreTextMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/PreTextMessageEntity.kt index e9789d7ad0..17c0e3c0c0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/PreTextMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/PreTextMessageEntity.kt @@ -5,5 +5,6 @@ data class PreTextMessageEntity( override val length: Int, override val sourceString: String ) : TextMessageEntity() { - override val formatSymbol: String = "```" + override val markdownFormatSymbol: String = "```" + override val htmlFormatTagname: String = "pre" } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextLinkMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextLinkMessageEntity.kt index 9d149100ca..f044bae249 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextLinkMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextLinkMessageEntity.kt @@ -5,8 +5,7 @@ data class TextLinkMessageEntity( override val length: Int, override val sourceString: String, val url: String -) : MessageEntity { - override val asMarkdownSource: String by lazy { - "[$sourceString]($url)" - } -} +) : LinkMessageEntity( + sourceString, + url +) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMentionMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMentionMessageEntity.kt index eba3c210d2..f4ec51de54 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMentionMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMentionMessageEntity.kt @@ -7,8 +7,7 @@ class TextMentionMessageEntity( override val length: Int, override val sourceString: String, val user: User -) : MessageEntity { - override val asMarkdownSource: String by lazy { - "[$sourceString](tg://user?id=${user.id})" - } -} \ No newline at end of file +) : LinkMessageEntity( + sourceString, + "tg://user?id=${user.id})" +) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMessageEntity.kt index 53c7142383..d271d6e4f8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/TextMessageEntity.kt @@ -1,9 +1,14 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity abstract class TextMessageEntity : MessageEntity { - protected abstract val formatSymbol: String + protected abstract val markdownFormatSymbol: String + protected abstract val htmlFormatTagname: String override val asMarkdownSource: String by lazy { - "$formatSymbol$sourceString$formatSymbol" + "$markdownFormatSymbol$sourceString$markdownFormatSymbol" + } + + override val asHtmlSource: String by lazy { + "<$htmlFormatTagname>$sourceString" } } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/URLMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/URLMessageEntity.kt index 6a5a182318..2aee673219 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/URLMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/URLMessageEntity.kt @@ -4,11 +4,9 @@ data class URLMessageEntity( override val offset: Int, override val length: Int, override val sourceString: String -) : MessageEntity { - val url: String - get() = sourceString - - override val asMarkdownSource: String by lazy { - "[$sourceString]($url)" - } +) : LinkMessageEntity( + sourceString, + sourceString +) { + val url: String = link } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/String.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/String.kt index 30584c0c7b..9c2c4d9c33 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/String.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/String.kt @@ -9,3 +9,17 @@ fun String.toMarkdown(): String { "\\_" ) } + +fun String.toHtml(): String = replace( + "<", + "<" +).replace( + ">", + ">" +).replace( + "&", + "&" +).replace( + "\"", + """ +)