diff --git a/CHANGELOG.md b/CHANGELOG.md index 854d749409..62241d6218 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,10 +58,12 @@ * Fix: for sending requests caption and text lengths limits were updated * New variant of `row` was added * `makeLinkToMessage` extensions has been deprecated (replaced into `TelegramBotAPI-extensions-utils`) + * All `String` formatting public extensions and functions was deprecated and replaced into `TelegramBotAPI-extensions-utils` * `TelegramBotAPI-extensions-utils`: * `safely` function was introduced. It is in `PreviewFeature` state currently * `makeLinkToMessage` extensions has been added * `makeLinkToAddStickerSet` function and its variations were added + * All `String` formatting extensions and functions from `TelegramBotAPI` was added ### 0.27.4 diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/LinksFormatting.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/formatting/LinksFormatting.kt similarity index 88% rename from TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/LinksFormatting.kt rename to TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/formatting/LinksFormatting.kt index cca7c6c25d..1bd86d26d5 100644 --- a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/LinksFormatting.kt +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/formatting/LinksFormatting.kt @@ -1,4 +1,4 @@ -package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils +package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.formatting import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.* @@ -24,7 +24,8 @@ fun makeLinkToMessage( ): String? { return when { chat is UsernameChat && chat.username != null -> { - "$internalLinkBeginning/${chat.username ?.username ?.replace(usernameBeginSymbolRegex, "")}/$messageId" + "$internalLinkBeginning/${chat.username ?.username ?.replace( + usernameBeginSymbolRegex, "")}/$messageId" } chat !is PrivateChat -> chat.id.chatId.toString().replace( linkIdRedundantPartRegex, @@ -56,21 +57,24 @@ fun makeLinkToAddStickerSet( /** * @return Link for adding of sticker set with name [stickerSetName] with formatting for [MarkdownV2] */ -fun makeLinkToAddStickerSetInMarkdownV2(stickerSetName: StickerSetName) = makeLinkToAddStickerSet( - stickerSetName, - MarkdownV2 -) +fun makeLinkToAddStickerSetInMarkdownV2(stickerSetName: StickerSetName) = + makeLinkToAddStickerSet( + stickerSetName, + MarkdownV2 + ) /** * @return Link for adding of sticker set with name [stickerSetName] with formatting for [Markdown] */ -fun makeLinkToAddStickerSetInMarkdown(stickerSetName: StickerSetName) = makeLinkToAddStickerSet( - stickerSetName, - Markdown -) +fun makeLinkToAddStickerSetInMarkdown(stickerSetName: StickerSetName) = + makeLinkToAddStickerSet( + stickerSetName, + Markdown + ) /** * @return Link for adding of sticker set with name [stickerSetName] with formatting for [HTML] */ -fun makeLinkToAddStickerSetInHtml(stickerSetName: StickerSetName) = makeLinkToAddStickerSet( - stickerSetName, - HTML -) +fun makeLinkToAddStickerSetInHtml(stickerSetName: StickerSetName) = + makeLinkToAddStickerSet( + stickerSetName, + HTML + ) diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/formatting/StringFormatting.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/formatting/StringFormatting.kt new file mode 100644 index 0000000000..24aa8bb1f9 --- /dev/null +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/formatting/StringFormatting.kt @@ -0,0 +1,243 @@ +package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.formatting + +import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.* +import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.* + +const val markdownBoldControl = "*" +const val markdownItalicControl = "_" +const val markdownCodeControl = "`" +const val markdownPreControl = "```" + +const val markdownV2ItalicUnderlineDelimiter = "\u0013" +const val markdownV2StrikethroughControl = "~" +const val markdownV2UnderlineControl = "__" +const val markdownV2UnderlineEndControl = "$markdownV2UnderlineControl$markdownV2ItalicUnderlineDelimiter" +const val markdownV2ItalicEndControl = "$markdownItalicControl$markdownV2ItalicUnderlineDelimiter" + +const val htmlBoldControl = "b" +const val htmlItalicControl = "i" +const val htmlCodeControl = "code" +const val htmlPreControl = "pre" +const val htmlUnderlineControl = "u" +const val htmlStrikethroughControl = "s" + +private fun String.markdownDefault( + openControlSymbol: String, + closeControlSymbol: String = openControlSymbol +) = "$openControlSymbol${toMarkdown()}$closeControlSymbol" +private fun String.markdownV2Default( + openControlSymbol: String, + closeControlSymbol: String = openControlSymbol, + escapeFun: String.() -> String = String::escapeMarkdownV2Common +) = "$openControlSymbol${escapeFun()}$closeControlSymbol" +private fun String.htmlDefault( + openControlSymbol: String, + closeControlSymbol: String = openControlSymbol +) = "<$openControlSymbol>${toHtml()}" + +fun String.linkMarkdown(link: String): String = "[${toMarkdown()}](${link.toMarkdown()})" +fun String.linkMarkdownV2(link: String): String = "[${escapeMarkdownV2Common()}](${link.escapeMarkdownV2Link()})" +fun String.linkHTML(link: String): String = "${toHtml()}" + + +fun String.boldMarkdown(): String = markdownDefault(markdownBoldControl) +fun String.boldMarkdownV2(): String = markdownV2Default(markdownBoldControl) +fun String.boldHTML(): String = htmlDefault(htmlBoldControl) + + +fun String.italicMarkdown(): String = markdownDefault(markdownItalicControl) +fun String.italicMarkdownV2(): String = markdownV2Default(markdownItalicControl, markdownV2ItalicEndControl) +fun String.italicHTML(): String = htmlDefault(htmlItalicControl) + +/** + * Crutch for support of strikethrough in default markdown. Simply add modifier, but it will not look like correct + */ +fun String.strikethroughMarkdown(): String = map { it + "\u0336" }.joinToString("") +fun String.strikethroughMarkdownV2(): String = markdownV2Default(markdownV2StrikethroughControl) +fun String.strikethroughHTML(): String = htmlDefault(htmlStrikethroughControl) + + +/** + * Crutch for support of underline in default markdown. Simply add modifier, but it will not look like correct + */ +fun String.underlineMarkdown(): String = map { it + "\u0347" }.joinToString("") +fun String.underlineMarkdownV2(): String = markdownV2Default(markdownV2UnderlineControl, markdownV2UnderlineEndControl) +fun String.underlineHTML(): String = htmlDefault(htmlUnderlineControl) + + +fun String.codeMarkdown(): String = markdownDefault(markdownCodeControl) +fun String.codeMarkdownV2(): String = markdownV2Default(markdownCodeControl, escapeFun = String::escapeMarkdownV2PreAndCode) +fun String.codeHTML(): String = htmlDefault(htmlCodeControl) + + +fun String.preMarkdown(language: String? = null): String = markdownDefault( + "$markdownPreControl${language ?: ""}\n", + "\n$markdownPreControl" +) +fun String.preMarkdownV2(language: String? = null): String = markdownV2Default( + "$markdownPreControl${language ?: ""}\n", + "\n$markdownPreControl", + String::escapeMarkdownV2PreAndCode +) +fun String.preHTML(language: String? = null): String = htmlDefault( + language ?.let { + "$htmlPreControl><$htmlCodeControl class=\"language-$language\"" + } ?: htmlPreControl, + language ?.let { + "$htmlCodeControl> String): String = if (startsWith("@")) { + adapt() +} else { + "@${adapt()}" +} + + +private inline fun String.hashTag(adapt: String.() -> String): String = if (startsWith("#")) { + adapt() +} else { + "#${adapt()}" +} + + +fun String.textMentionMarkdown(userId: UserId): String = linkMarkdown(userId.link) +fun String.textMentionMarkdownV2(userId: UserId): String = linkMarkdownV2(userId.link) +fun String.textMentionHTML(userId: UserId): String = linkHTML(userId.link) + + +fun String.mentionMarkdown(): String = mention(String::toMarkdown) +fun String.mentionMarkdownV2(): String = mention(String::escapeMarkdownV2Common) +fun String.mentionHTML(): String = mention(String::toHtml) + + +fun String.hashTagMarkdown(): String = hashTag(String::toMarkdown) +fun String.hashTagMarkdownV2(): String = hashTag(String::escapeMarkdownV2Common).escapeMarkdownV2Common() +fun String.hashTagHTML(): String = hashTag(String::toHtml) + + +fun String.phoneMarkdown(): String = toMarkdown() +fun String.phoneMarkdownV2(): String = escapeMarkdownV2Common() +fun String.phoneHTML(): String = toHtml() + + +fun String.command(adapt: String.() -> String): String = if (startsWith("/")) { + adapt() +} else { + "/${adapt()}" +} + +fun String.commandMarkdown(): String = command(String::toMarkdown) +fun String.commandMarkdownV2(): String = command(String::escapeMarkdownV2Common) +fun String.commandHTML(): String = command(String::toHtml) + + +fun String.regularMarkdown(): String = toMarkdown() +fun String.regularMarkdownV2(): String = escapeMarkdownV2Common() +fun String.regularHtml(): String = toHtml() + + +fun String.cashTagMarkdown(): String = toMarkdown() +fun String.cashTagMarkdownV2(): String = escapeMarkdownV2Common() +fun String.cashTagHtml(): String = toHtml() + + +infix fun String.bold(parseMode: ParseMode): String = when (parseMode) { + is HTML -> boldHTML() + is Markdown -> boldMarkdown() + is MarkdownV2 -> boldMarkdownV2() +} + + +infix fun String.italic(parseMode: ParseMode): String = when (parseMode) { + is HTML -> italicHTML() + is Markdown -> italicMarkdown() + is MarkdownV2 -> italicMarkdownV2() +} + +infix fun String.hashTag(parseMode: ParseMode): String = when (parseMode) { + is HTML -> hashTagHTML() + is Markdown -> hashTagMarkdown() + is MarkdownV2 -> hashTagMarkdownV2() +} + +infix fun String.code(parseMode: ParseMode): String = when (parseMode) { + is HTML -> codeHTML() + is Markdown -> codeMarkdown() + is MarkdownV2 -> codeMarkdownV2() +} + +fun String.pre(parseMode: ParseMode, language: String? = null): String = when (parseMode) { + is HTML -> preHTML(language) + is Markdown -> preMarkdown(language) + is MarkdownV2 -> preMarkdownV2(language) +} +infix fun String.pre(parseMode: ParseMode): String = pre(parseMode, null) + +infix fun String.email(parseMode: ParseMode): String = when (parseMode) { + is HTML -> emailHTML() + is Markdown -> emailMarkdown() + is MarkdownV2 -> emailMarkdownV2() +} + +infix fun Pair.link(parseMode: ParseMode): String = when (parseMode) { + is HTML -> first.linkHTML(second) + is Markdown -> first.linkMarkdown(second) + is MarkdownV2 -> first.linkMarkdownV2(second) +} + +infix fun String.mention(parseMode: ParseMode): String = when (parseMode) { + is HTML -> mentionHTML() + is Markdown -> mentionMarkdown() + is MarkdownV2 -> mentionMarkdownV2() +} + +infix fun Pair.mention(parseMode: ParseMode): String = when (parseMode) { + is HTML -> first.textMentionHTML(second) + is Markdown -> first.textMentionMarkdown(second) + is MarkdownV2 -> first.textMentionMarkdownV2(second) +} + +infix fun String.phone(parseMode: ParseMode): String = when (parseMode) { + is HTML -> phoneHTML() + is Markdown -> phoneMarkdown() + is MarkdownV2 -> phoneMarkdownV2() +} + +infix fun String.command(parseMode: ParseMode): String = when (parseMode) { + is HTML -> commandHTML() + is Markdown -> commandMarkdown() + is MarkdownV2 -> commandMarkdownV2() +} + +infix fun String.underline(parseMode: ParseMode): String = when (parseMode) { + is HTML -> underlineHTML() + is Markdown -> underlineMarkdown() + is MarkdownV2 -> underlineMarkdownV2() +} + +infix fun String.strikethrough(parseMode: ParseMode): String = when (parseMode) { + is HTML -> strikethroughHTML() + is Markdown -> strikethroughMarkdown() + is MarkdownV2 -> strikethroughMarkdownV2() +} + +infix fun String.regular(parseMode: ParseMode): String = when (parseMode) { + is HTML -> regularHtml() + is Markdown -> regularMarkdown() + is MarkdownV2 -> regularMarkdownV2() +} + +infix fun String.cashtag(parseMode: ParseMode): String = when (parseMode) { + is HTML -> cashTagHtml() + is Markdown -> cashTagMarkdown() + is MarkdownV2 -> cashTagMarkdownV2() +} diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt index c112a00955..0dbb355654 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt @@ -36,50 +36,71 @@ private fun String.htmlDefault( closeControlSymbol: String = openControlSymbol ) = "<$openControlSymbol>${toHtml()}" +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.linkMarkdown(link: String): String = "[${toMarkdown()}](${link.toMarkdown()})" +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.linkMarkdownV2(link: String): String = "[${escapeMarkdownV2Common()}](${link.escapeMarkdownV2Link()})" +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.linkHTML(link: String): String = "${toHtml()}" +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.boldMarkdown(): String = markdownDefault(markdownBoldControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.boldMarkdownV2(): String = markdownV2Default(markdownBoldControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.boldHTML(): String = htmlDefault(htmlBoldControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.italicMarkdown(): String = markdownDefault(markdownItalicControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.italicMarkdownV2(): String = markdownV2Default(markdownItalicControl, markdownV2ItalicEndControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.italicHTML(): String = htmlDefault(htmlItalicControl) /** * Crutch for support of strikethrough in default markdown. Simply add modifier, but it will not look like correct */ +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.strikethroughMarkdown(): String = map { it + "\u0336" }.joinToString("") +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.strikethroughMarkdownV2(): String = markdownV2Default(markdownV2StrikethroughControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.strikethroughHTML(): String = htmlDefault(htmlStrikethroughControl) /** * Crutch for support of underline in default markdown. Simply add modifier, but it will not look like correct */ +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.underlineMarkdown(): String = map { it + "\u0347" }.joinToString("") +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.underlineMarkdownV2(): String = markdownV2Default(markdownV2UnderlineControl, markdownV2UnderlineEndControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.underlineHTML(): String = htmlDefault(htmlUnderlineControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.codeMarkdown(): String = markdownDefault(markdownCodeControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.codeMarkdownV2(): String = markdownV2Default(markdownCodeControl, escapeFun = String::escapeMarkdownV2PreAndCode) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.codeHTML(): String = htmlDefault(htmlCodeControl) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.preMarkdown(language: String? = null): String = markdownDefault( "$markdownPreControl${language ?: ""}\n", "\n$markdownPreControl" ) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.preMarkdownV2(language: String? = null): String = markdownV2Default( "$markdownPreControl${language ?: ""}\n", "\n$markdownPreControl", String::escapeMarkdownV2PreAndCode ) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.preHTML(language: String? = null): String = htmlDefault( language ?.let { "$htmlPreControl><$htmlCodeControl class=\"language-$language\"" @@ -90,11 +111,15 @@ fun String.preHTML(language: String? = null): String = htmlDefault( ) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.emailMarkdown(): String = linkMarkdown("mailto://$${toMarkdown()}") +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.emailMarkdownV2(): String = linkMarkdownV2("mailto://$${toMarkdown()}") +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.emailHTML(): String = linkHTML("mailto://$${toHtml()}") +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") private inline fun String.mention(adapt: String.() -> String): String = if (startsWith("@")) { adapt() } else { @@ -102,6 +127,7 @@ private inline fun String.mention(adapt: String.() -> String): String = if (star } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") private inline fun String.hashTag(adapt: String.() -> String): String = if (startsWith("#")) { adapt() } else { @@ -109,47 +135,70 @@ private inline fun String.hashTag(adapt: String.() -> String): String = if (star } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.textMentionMarkdown(userId: UserId): String = linkMarkdown(userId.link) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.textMentionMarkdownV2(userId: UserId): String = linkMarkdownV2(userId.link) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.textMentionHTML(userId: UserId): String = linkHTML(userId.link) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.mentionMarkdown(): String = mention(String::toMarkdown) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.mentionMarkdownV2(): String = mention(String::escapeMarkdownV2Common) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.mentionHTML(): String = mention(String::toHtml) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.hashTagMarkdown(): String = hashTag(String::toMarkdown) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.hashTagMarkdownV2(): String = hashTag(String::escapeMarkdownV2Common).escapeMarkdownV2Common() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.hashTagHTML(): String = hashTag(String::toHtml) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.phoneMarkdown(): String = toMarkdown() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.phoneMarkdownV2(): String = escapeMarkdownV2Common() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.phoneHTML(): String = toHtml() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.command(adapt: String.() -> String): String = if (startsWith("/")) { adapt() } else { "/${adapt()}" } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.commandMarkdown(): String = command(String::toMarkdown) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.commandMarkdownV2(): String = command(String::escapeMarkdownV2Common) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.commandHTML(): String = command(String::toHtml) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.regularMarkdown(): String = toMarkdown() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.regularMarkdownV2(): String = escapeMarkdownV2Common() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.regularHtml(): String = toHtml() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.cashTagMarkdown(): String = toMarkdown() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.cashTagMarkdownV2(): String = escapeMarkdownV2Common() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.cashTagHtml(): String = toHtml() +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.bold(parseMode: ParseMode): String = when (parseMode) { is HTML -> boldHTML() is Markdown -> boldMarkdown() @@ -157,85 +206,100 @@ infix fun String.bold(parseMode: ParseMode): String = when (parseMode) { } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.italic(parseMode: ParseMode): String = when (parseMode) { is HTML -> italicHTML() is Markdown -> italicMarkdown() is MarkdownV2 -> italicMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.hashTag(parseMode: ParseMode): String = when (parseMode) { is HTML -> hashTagHTML() is Markdown -> hashTagMarkdown() is MarkdownV2 -> hashTagMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.code(parseMode: ParseMode): String = when (parseMode) { is HTML -> codeHTML() is Markdown -> codeMarkdown() is MarkdownV2 -> codeMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") fun String.pre(parseMode: ParseMode, language: String? = null): String = when (parseMode) { is HTML -> preHTML(language) is Markdown -> preMarkdown(language) is MarkdownV2 -> preMarkdownV2(language) } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.pre(parseMode: ParseMode): String = pre(parseMode, null) +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.email(parseMode: ParseMode): String = when (parseMode) { is HTML -> emailHTML() is Markdown -> emailMarkdown() is MarkdownV2 -> emailMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun Pair.link(parseMode: ParseMode): String = when (parseMode) { is HTML -> first.linkHTML(second) is Markdown -> first.linkMarkdown(second) is MarkdownV2 -> first.linkMarkdownV2(second) } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.mention(parseMode: ParseMode): String = when (parseMode) { is HTML -> mentionHTML() is Markdown -> mentionMarkdown() is MarkdownV2 -> mentionMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun Pair.mention(parseMode: ParseMode): String = when (parseMode) { is HTML -> first.textMentionHTML(second) is Markdown -> first.textMentionMarkdown(second) is MarkdownV2 -> first.textMentionMarkdownV2(second) } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.phone(parseMode: ParseMode): String = when (parseMode) { is HTML -> phoneHTML() is Markdown -> phoneMarkdown() is MarkdownV2 -> phoneMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.command(parseMode: ParseMode): String = when (parseMode) { is HTML -> commandHTML() is Markdown -> commandMarkdown() is MarkdownV2 -> commandMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.underline(parseMode: ParseMode): String = when (parseMode) { is HTML -> underlineHTML() is Markdown -> underlineMarkdown() is MarkdownV2 -> underlineMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.strikethrough(parseMode: ParseMode): String = when (parseMode) { is HTML -> strikethroughHTML() is Markdown -> strikethroughMarkdown() is MarkdownV2 -> strikethroughMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.regular(parseMode: ParseMode): String = when (parseMode) { is HTML -> regularHtml() is Markdown -> regularMarkdown() is MarkdownV2 -> regularMarkdownV2() } +@Deprecated("Replaced into project TelegramBotAPI-extensions-utils") infix fun String.cashtag(parseMode: ParseMode): String = when (parseMode) { is HTML -> cashTagHtml() is Markdown -> cashTagMarkdown()