diff --git a/tgbotapi.core/api/tgbotapi.core.api b/tgbotapi.core/api/tgbotapi.core.api index e564b1c870..2994b3843a 100644 --- a/tgbotapi.core/api/tgbotapi.core.api +++ b/tgbotapi.core/api/tgbotapi.core.api @@ -34510,6 +34510,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockAnchor$$seria } public final class dev/inmo/tgbotapi/types/rich/RichBlockAnchor$Companion { + public final fun html (Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34546,6 +34548,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockAnimation$$se } public final class dev/inmo/tgbotapi/types/rich/RichBlockAnimation$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/files/AnimationFile;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/files/AnimationFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34580,6 +34584,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockAudio$$serial } public final class dev/inmo/tgbotapi/types/rich/RichBlockAudio$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/files/AudioFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/files/AudioFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34614,6 +34620,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockBlockQuotatio } public final class dev/inmo/tgbotapi/types/rich/RichBlockBlockQuotation$Companion { + public final fun html (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34678,6 +34686,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockCollage$$seri } public final class dev/inmo/tgbotapi/types/rich/RichBlockCollage$Companion { + public final fun html (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34714,6 +34724,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockDetails$$seri } public final class dev/inmo/tgbotapi/types/rich/RichBlockDetails$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/util/List;Ljava/lang/Boolean;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/util/List;Ljava/lang/Boolean;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34741,6 +34753,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockDivider$$seri } public final class dev/inmo/tgbotapi/types/rich/RichBlockDivider$Companion { + public final fun html ()Ljava/lang/String; + public final fun markdown ()Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34772,6 +34786,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockFooter$$seria } public final class dev/inmo/tgbotapi/types/rich/RichBlockFooter$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34810,6 +34826,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockList$$seriali } public final class dev/inmo/tgbotapi/types/rich/RichBlockList$Companion { + public final fun html (Ljava/util/List;)Ljava/lang/String; + public final fun markdown (Ljava/util/List;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34896,6 +34914,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockMap$$serializ } public final class dev/inmo/tgbotapi/types/rich/RichBlockMap$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/location/StaticLocation;ILdev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/location/StaticLocation;ILdev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34927,6 +34947,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockMathematicalE } public final class dev/inmo/tgbotapi/types/rich/RichBlockMathematicalExpression$Companion { + public final fun html (Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34958,6 +34980,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockParagraph$$se } public final class dev/inmo/tgbotapi/types/rich/RichBlockParagraph$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -34994,6 +35018,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockPhoto$$serial } public final class dev/inmo/tgbotapi/types/rich/RichBlockPhoto$Companion { + public final fun html-OKnyJrA (Ljava/util/List;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown-ACrxq0Q (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35028,6 +35054,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockPreformatted$ } public final class dev/inmo/tgbotapi/types/rich/RichBlockPreformatted$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35062,6 +35090,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockPullQuotation } public final class dev/inmo/tgbotapi/types/rich/RichBlockPullQuotation$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35095,6 +35125,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockSectionHeadin } public final class dev/inmo/tgbotapi/types/rich/RichBlockSectionHeading$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;I)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;I)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35133,6 +35165,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockSlideshow$$se } public final class dev/inmo/tgbotapi/types/rich/RichBlockSlideshow$Companion { + public final fun html (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35171,6 +35205,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockTable$$serial } public final class dev/inmo/tgbotapi/types/rich/RichBlockTable$Companion { + public final fun html (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ljava/util/List;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35240,6 +35276,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockThinking$$ser } public final class dev/inmo/tgbotapi/types/rich/RichBlockThinking$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35276,6 +35314,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockVideo$$serial } public final class dev/inmo/tgbotapi/types/rich/RichBlockVideo$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/files/VideoFile;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/files/VideoFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35310,6 +35350,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockVoiceNote$$se } public final class dev/inmo/tgbotapi/types/rich/RichBlockVoiceNote$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/files/VoiceFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/files/VoiceFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35380,6 +35422,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextAnchor$$serial } public final class dev/inmo/tgbotapi/types/rich/RichTextAnchor$Companion { + public final fun html (Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35413,6 +35457,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextAnchorLink$$se } public final class dev/inmo/tgbotapi/types/rich/RichTextAnchorLink$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35446,6 +35492,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextBankCardNumber } public final class dev/inmo/tgbotapi/types/rich/RichTextBankCardNumber$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35477,6 +35525,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextBold$$serializ } public final class dev/inmo/tgbotapi/types/rich/RichTextBold$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35510,6 +35560,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextBotCommand$$se } public final class dev/inmo/tgbotapi/types/rich/RichTextBotCommand$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35598,6 +35650,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextCashtag$$seria } public final class dev/inmo/tgbotapi/types/rich/RichTextCashtag$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35629,6 +35683,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextCode$$serializ } public final class dev/inmo/tgbotapi/types/rich/RichTextCode$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35662,6 +35718,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextCustomEmoji$$s } public final class dev/inmo/tgbotapi/types/rich/RichTextCustomEmoji$Companion { + public final fun html-R1fjqgo (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown-R1fjqgo (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35697,6 +35755,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextDateTime$$seri } public final class dev/inmo/tgbotapi/types/rich/RichTextDateTime$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;JLjava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;JLjava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35740,6 +35800,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextEmailAddress$$ } public final class dev/inmo/tgbotapi/types/rich/RichTextEmailAddress$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35789,6 +35851,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextGroup$$seriali } public final class dev/inmo/tgbotapi/types/rich/RichTextGroup$Companion { + public final fun html (Ljava/util/List;)Ljava/lang/String; + public final fun markdown (Ljava/util/List;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35822,6 +35886,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextHashtag$$seria } public final class dev/inmo/tgbotapi/types/rich/RichTextHashtag$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35883,6 +35949,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextItalic$$serial } public final class dev/inmo/tgbotapi/types/rich/RichTextItalic$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35914,6 +35982,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextMarked$$serial } public final class dev/inmo/tgbotapi/types/rich/RichTextMarked$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35945,6 +36015,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextMathematicalEx } public final class dev/inmo/tgbotapi/types/rich/RichTextMathematicalExpression$Companion { + public final fun html (Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -35978,6 +36050,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextMention$$seria } public final class dev/inmo/tgbotapi/types/rich/RichTextMention$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36011,6 +36085,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextPhoneNumber$$s } public final class dev/inmo/tgbotapi/types/rich/RichTextPhoneNumber$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36040,6 +36116,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextPlain$$seriali } public final class dev/inmo/tgbotapi/types/rich/RichTextPlain$Companion { + public final fun html (Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36073,6 +36151,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextReference$$ser } public final class dev/inmo/tgbotapi/types/rich/RichTextReference$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36106,6 +36186,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextReferenceLink$ } public final class dev/inmo/tgbotapi/types/rich/RichTextReferenceLink$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36146,6 +36228,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextSpoiler$$seria } public final class dev/inmo/tgbotapi/types/rich/RichTextSpoiler$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36177,6 +36261,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextStrikethrough$ } public final class dev/inmo/tgbotapi/types/rich/RichTextStrikethrough$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36208,6 +36294,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextSubscript$$ser } public final class dev/inmo/tgbotapi/types/rich/RichTextSubscript$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36239,6 +36327,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextSuperscript$$s } public final class dev/inmo/tgbotapi/types/rich/RichTextSuperscript$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36272,6 +36362,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextTextMention$$s } public final class dev/inmo/tgbotapi/types/rich/RichTextTextMention$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/chat/User;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/chat/User;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36303,6 +36395,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextUnderline$$ser } public final class dev/inmo/tgbotapi/types/rich/RichTextUnderline$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } @@ -36336,6 +36430,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextUrl$$serialize } public final class dev/inmo/tgbotapi/types/rich/RichTextUrl$Companion { + public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; + public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;)Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlockFormatting.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlockFormatting.kt index cefa811de3..bfd64293ea 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlockFormatting.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlockFormatting.kt @@ -28,49 +28,10 @@ val RichTextInfo.markdown: String val RichTextInfo.html: String get() = blocks.toRichHtml() -internal fun richOpenAttribute(isOpen: Boolean?): String = if (isOpen == true) " open" else "" - internal fun creditCiteMarkdown(credit: RichText?): String = credit?.let { "${it.markdown}" } ?: "" internal fun creditCiteHtml(credit: RichText?): String = credit?.let { "${it.html}" } ?: "" -internal fun richBlockListMarkdown(list: RichBlockList): String = - list.items.mapIndexed { index, item -> - val marker = when { - item.hasCheckbox == true -> if (item.isChecked == true) "- [x] " else "- [ ] " - item.labelType != null -> "${item.value ?: (index + 1)}. " - else -> "- " - } - item.blocks.toRichMarkdown().lineSequence().mapIndexed { lineIndex, line -> - if (lineIndex == 0) "$marker$line" else " $line" - }.joinToString(separator = "\n") - }.joinToString(separator = "\n") - -internal fun richBlockListHtml(list: RichBlockList): String { - val ordered = list.items.any { it.labelType != null } - val tag = if (ordered) "ol" else "ul" - val items = list.items.joinToString(separator = "") { item -> - val attributes = buildString { - item.value?.let { append(" value=\"$it\"") } - item.labelType?.let { append(" type=\"$it\"") } - } - val checkbox = if (item.hasCheckbox == true) { - "" - } else { - "" - } - "$checkbox${item.blocks.toRichHtml()}" - } - return "<$tag>$items" -} - -internal fun richBlockQuotationMarkdown(blocks: List, credit: RichText?): String { - val quoted = blocks.toRichMarkdown().lineSequence().joinToString(separator = "\n") { line -> - if (line.isEmpty()) ">" else "> $line" - } - return quoted + (credit?.let { "\n> ${creditCiteMarkdown(it)}" } ?: "") -} - internal fun richMediaContainerMarkdown(tag: String, blocks: List, caption: RichBlockCaption?): String { val media = blocks.joinToString(separator = "\n") { it.markdown } val captionPart = caption?.let { "\n
${it.text.markdown}${creditCiteMarkdown(it.credit)}
" } ?: "" @@ -91,54 +52,3 @@ internal fun richMediaHtml(tag: String, source: String, spoiler: Boolean, selfCl val element = if (selfClosing) "<$tag src=\"$source\"$spoilerAttribute/>" else "<$tag src=\"$source\"$spoilerAttribute>" return caption?.let { "
$element
${it.text.html}${creditCiteHtml(it.credit)}
" } ?: element } - -internal fun richBlockMapMarkdown(map: RichBlockMap): String { - val element = "" - return map.caption?.let { "
$element
${it.text.markdown}${creditCiteMarkdown(it.credit)}
" } ?: element -} - -internal fun richBlockMapHtml(map: RichBlockMap): String { - val element = "" - return map.caption?.let { "
$element
${it.text.html}${creditCiteHtml(it.credit)}
" } ?: element -} - -internal fun richBlockTableMarkdown(table: RichBlockTable): String { - if (table.cells.isEmpty()) return "" - fun renderRow(row: List): String = - row.joinToString(separator = " | ", prefix = "| ", postfix = " |") { it.text?.markdown ?: "" } - fun alignment(cell: RichBlockTableCell): String = when (cell.align) { - "left" -> ":---" - "center" -> ":--:" - "right" -> "---:" - else -> "---" - } - val header = table.cells.first() - val lines = mutableListOf( - renderRow(header), - header.joinToString(separator = " | ", prefix = "| ", postfix = " |") { alignment(it) } - ) - table.cells.drop(1).forEach { lines.add(renderRow(it)) } - return lines.joinToString(separator = "\n") -} - -internal fun richBlockTableHtml(table: RichBlockTable): String { - val attributes = buildString { - if (table.isBordered == true) append(" bordered") - if (table.isStriped == true) append(" striped") - } - val caption = table.caption?.let { "${it.html}" } ?: "" - val rows = table.cells.joinToString(separator = "") { row -> - val cells = row.joinToString(separator = "") { cell -> - val tag = if (cell.isHeader == true) "th" else "td" - val cellAttributes = buildString { - cell.colspan?.let { append(" colspan=\"$it\"") } - cell.rowspan?.let { append(" rowspan=\"$it\"") } - append(" align=\"${cell.align}\"") - append(" valign=\"${cell.valign}\"") - } - "<$tag$cellAttributes>${cell.text?.html ?: ""}" - } - "$cells" - } - return "$caption$rows" -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlocks.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlocks.kt index adbd6189cb..f74b61f22b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlocks.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichBlocks.kt @@ -49,13 +49,13 @@ data class RichBlockParagraph( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = text.markdown - override val html: String - get() = "

${text.html}

" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "paragraph" + fun markdown(text: RichText): String = text.markdown + fun html(text: RichText): String = "

${text.html}

" } } @@ -78,13 +78,13 @@ data class RichBlockSectionHeading( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "#".repeat(size) + " " + text.markdown - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, size) + override val html: String = html(text, size) companion object { const val TYPE = "heading" + fun markdown(text: RichText, size: Int): String = "#".repeat(size) + " " + text.markdown + fun html(text: RichText, size: Int): String = "${text.html}" } } @@ -104,13 +104,14 @@ data class RichBlockPreformatted( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "```" + (language ?: "") + "\n" + text.source + "\n```" - override val html: String - get() = language?.let { "
${text.html}
" } ?: "
${text.html}
" + override val markdown: String = markdown(text, language) + override val html: String = html(text, language) companion object { const val TYPE = "pre" + fun markdown(text: RichText, language: String?): String = "```" + (language ?: "") + "\n" + text.source + "\n```" + fun html(text: RichText, language: String?): String = + language?.let { "
${text.html}
" } ?: "
${text.html}
" } } @@ -128,13 +129,13 @@ data class RichBlockFooter( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "
${text.markdown}
" - override val html: String - get() = "
${text.html}
" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "footer" + fun markdown(text: RichText): String = "
${text.markdown}
" + fun html(text: RichText): String = "
${text.html}
" } } @@ -149,10 +150,8 @@ class RichBlockDivider : RichBlock { @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "---" - override val html: String - get() = "
" + override val markdown: String = markdown() + override val html: String = html() override fun equals(other: Any?): Boolean = other is RichBlockDivider @@ -162,6 +161,8 @@ class RichBlockDivider : RichBlock { companion object { const val TYPE = "divider" + fun markdown(): String = "---" + fun html(): String = "
" } } @@ -179,13 +180,13 @@ data class RichBlockMathematicalExpression( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "\$\$" + expression + "\$\$" - override val html: String - get() = "$expression" + override val markdown: String = markdown(expression) + override val html: String = html(expression) companion object { const val TYPE = "mathematical_expression" + fun markdown(expression: String): String = "\$\$" + expression + "\$\$" + fun html(expression: String): String = "$expression" } } @@ -203,13 +204,13 @@ data class RichBlockAnchor( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "" - override val html: String - get() = "" + override val markdown: String = markdown(name) + override val html: String = html(name) companion object { const val TYPE = "anchor" + fun markdown(name: String): String = "" + fun html(name: String): String = "" } } @@ -227,13 +228,40 @@ data class RichBlockList( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richBlockListMarkdown(this) - override val html: String - get() = richBlockListHtml(this) + override val markdown: String = markdown(items) + override val html: String = html(items) companion object { const val TYPE = "list" + fun markdown(items: List): String = + items.mapIndexed { index, item -> + val marker = when { + item.hasCheckbox == true -> if (item.isChecked == true) "- [x] " else "- [ ] " + item.labelType != null -> "${item.value ?: (index + 1)}. " + else -> "- " + } + item.blocks.toRichMarkdown().lineSequence().mapIndexed { lineIndex, line -> + if (lineIndex == 0) "$marker$line" else " $line" + }.joinToString(separator = "\n") + }.joinToString(separator = "\n") + + fun html(items: List): String { + val ordered = items.any { it.labelType != null } + val tag = if (ordered) "ol" else "ul" + val renderedItems = items.joinToString(separator = "") { item -> + val attributes = buildString { + item.value?.let { append(" value=\"$it\"") } + item.labelType?.let { append(" type=\"$it\"") } + } + val checkbox = if (item.hasCheckbox == true) { + "" + } else { + "" + } + "$checkbox${item.blocks.toRichHtml()}" + } + return "<$tag>$renderedItems" + } } } @@ -253,13 +281,20 @@ data class RichBlockBlockQuotation( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richBlockQuotationMarkdown(blocks, credit) - override val html: String - get() = "
${blocks.toRichHtml()}${creditCiteHtml(credit)}
" + override val markdown: String = markdown(blocks, credit) + override val html: String = html(blocks, credit) companion object { const val TYPE = "blockquote" + fun markdown(blocks: List, credit: RichText?): String { + val quoted = blocks.toRichMarkdown().lineSequence().joinToString(separator = "\n") { line -> + if (line.isEmpty()) ">" else "> $line" + } + return quoted + (credit?.let { "\n> ${creditCiteMarkdown(it)}" } ?: "") + } + + fun html(blocks: List, credit: RichText?): String = + "
${blocks.toRichHtml()}${creditCiteHtml(credit)}
" } } @@ -279,13 +314,13 @@ data class RichBlockPullQuotation( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "" - override val html: String - get() = "" + override val markdown: String = markdown(text, credit) + override val html: String = html(text, credit) companion object { const val TYPE = "pullquote" + fun markdown(text: RichText, credit: RichText?): String = "" + fun html(text: RichText, credit: RichText?): String = "" } } @@ -305,13 +340,15 @@ data class RichBlockCollage( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richMediaContainerMarkdown("tg-collage", blocks, caption) - override val html: String - get() = richMediaContainerHtml("tg-collage", blocks, caption) + override val markdown: String = markdown(blocks, caption) + override val html: String = html(blocks, caption) companion object { const val TYPE = "collage" + fun markdown(blocks: List, caption: RichBlockCaption?): String = + richMediaContainerMarkdown("tg-collage", blocks, caption) + fun html(blocks: List, caption: RichBlockCaption?): String = + richMediaContainerHtml("tg-collage", blocks, caption) } } @@ -331,13 +368,15 @@ data class RichBlockSlideshow( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richMediaContainerMarkdown("tg-slideshow", blocks, caption) - override val html: String - get() = richMediaContainerHtml("tg-slideshow", blocks, caption) + override val markdown: String = markdown(blocks, caption) + override val html: String = html(blocks, caption) companion object { const val TYPE = "slideshow" + fun markdown(blocks: List, caption: RichBlockCaption?): String = + richMediaContainerMarkdown("tg-slideshow", blocks, caption) + fun html(blocks: List, caption: RichBlockCaption?): String = + richMediaContainerHtml("tg-slideshow", blocks, caption) } } @@ -361,13 +400,51 @@ data class RichBlockTable( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richBlockTableMarkdown(this) - override val html: String - get() = richBlockTableHtml(this) + override val markdown: String = markdown(cells) + override val html: String = html(cells, isBordered, isStriped, caption) companion object { const val TYPE = "table" + fun markdown(cells: List>): String { + if (cells.isEmpty()) return "" + fun renderRow(row: List): String = + row.joinToString(separator = " | ", prefix = "| ", postfix = " |") { it.text?.markdown ?: "" } + fun alignment(cell: RichBlockTableCell): String = when (cell.align) { + "left" -> ":---" + "center" -> ":--:" + "right" -> "---:" + else -> "---" + } + val header = cells.first() + val lines = mutableListOf( + renderRow(header), + header.joinToString(separator = " | ", prefix = "| ", postfix = " |") { alignment(it) } + ) + cells.drop(1).forEach { lines.add(renderRow(it)) } + return lines.joinToString(separator = "\n") + } + + fun html(cells: List>, isBordered: Boolean?, isStriped: Boolean?, caption: RichText?): String { + val attributes = buildString { + if (isBordered == true) append(" bordered") + if (isStriped == true) append(" striped") + } + val captionPart = caption?.let { "${it.html}" } ?: "" + val rows = cells.joinToString(separator = "") { row -> + val renderedCells = row.joinToString(separator = "") { cell -> + val tag = if (cell.isHeader == true) "th" else "td" + val cellAttributes = buildString { + cell.colspan?.let { append(" colspan=\"$it\"") } + cell.rowspan?.let { append(" rowspan=\"$it\"") } + append(" align=\"${cell.align}\"") + append(" valign=\"${cell.valign}\"") + } + "<$tag$cellAttributes>${cell.text?.html ?: ""}" + } + "$renderedCells" + } + return "$captionPart$rows" + } } } @@ -389,13 +466,20 @@ data class RichBlockDetails( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "${summary.markdown}\n\n${blocks.toRichMarkdown()}\n\n" - override val html: String - get() = "${summary.html}${blocks.toRichHtml()}" + override val markdown: String = markdown(summary, blocks, isOpen) + override val html: String = html(summary, blocks, isOpen) companion object { const val TYPE = "details" + fun markdown(summary: RichText, blocks: List, isOpen: Boolean?): String { + val open = if (isOpen == true) " open" else "" + return "${summary.markdown}\n\n${blocks.toRichMarkdown()}\n\n" + } + + fun html(summary: RichText, blocks: List, isOpen: Boolean?): String { + val open = if (isOpen == true) " open" else "" + return "${summary.html}${blocks.toRichHtml()}" + } } } @@ -424,13 +508,20 @@ data class RichBlockMap( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richBlockMapMarkdown(this) - override val html: String - get() = richBlockMapHtml(this) + override val markdown: String = markdown(location, zoom, caption) + override val html: String = html(location, zoom, caption) companion object { const val TYPE = "map" + fun markdown(location: StaticLocation, zoom: Int, caption: RichBlockCaption?): String { + val element = "" + return caption?.let { "
$element
${it.text.markdown}${creditCiteMarkdown(it.credit)}
" } ?: element + } + + fun html(location: StaticLocation, zoom: Int, caption: RichBlockCaption?): String { + val element = "" + return caption?.let { "
$element
${it.text.html}${creditCiteHtml(it.credit)}
" } ?: element + } } } @@ -452,13 +543,15 @@ data class RichBlockAnimation( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richMediaMarkdown(animation.fileId.fileId, caption) - override val html: String - get() = richMediaHtml("video", animation.fileId.fileId, hasSpoiler == true, selfClosing = false, caption = caption) + override val markdown: String = markdown(animation, caption) + override val html: String = html(animation, hasSpoiler, caption) companion object { const val TYPE = "animation" + fun markdown(animation: AnimationFile, caption: RichBlockCaption?): String = + richMediaMarkdown(animation.fileId.fileId, caption) + fun html(animation: AnimationFile, hasSpoiler: Boolean?, caption: RichBlockCaption?): String = + richMediaHtml("video", animation.fileId.fileId, hasSpoiler == true, selfClosing = false, caption = caption) } } @@ -478,13 +571,15 @@ data class RichBlockAudio( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richMediaMarkdown(audio.fileId.fileId, caption) - override val html: String - get() = richMediaHtml("audio", audio.fileId.fileId, spoiler = false, selfClosing = false, caption = caption) + override val markdown: String = markdown(audio, caption) + override val html: String = html(audio, caption) companion object { const val TYPE = "audio" + fun markdown(audio: AudioFile, caption: RichBlockCaption?): String = + richMediaMarkdown(audio.fileId.fileId, caption) + fun html(audio: AudioFile, caption: RichBlockCaption?): String = + richMediaHtml("audio", audio.fileId.fileId, spoiler = false, selfClosing = false, caption = caption) } } @@ -506,13 +601,15 @@ data class RichBlockPhoto( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richMediaMarkdown(photo.fileId.fileId, caption) - override val html: String - get() = richMediaHtml("img", photo.fileId.fileId, hasSpoiler == true, selfClosing = true, caption = caption) + override val markdown: String = markdown(photo, caption) + override val html: String = html(photo, hasSpoiler, caption) companion object { const val TYPE = "photo" + fun markdown(photo: PhotoFile, caption: RichBlockCaption?): String = + richMediaMarkdown(photo.fileId.fileId, caption) + fun html(photo: PhotoFile, hasSpoiler: Boolean?, caption: RichBlockCaption?): String = + richMediaHtml("img", photo.fileId.fileId, hasSpoiler == true, selfClosing = true, caption = caption) } } @@ -534,13 +631,15 @@ data class RichBlockVideo( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richMediaMarkdown(video.fileId.fileId, caption) - override val html: String - get() = richMediaHtml("video", video.fileId.fileId, hasSpoiler == true, selfClosing = false, caption = caption) + override val markdown: String = markdown(video, caption) + override val html: String = html(video, hasSpoiler, caption) companion object { const val TYPE = "video" + fun markdown(video: VideoFile, caption: RichBlockCaption?): String = + richMediaMarkdown(video.fileId.fileId, caption) + fun html(video: VideoFile, hasSpoiler: Boolean?, caption: RichBlockCaption?): String = + richMediaHtml("video", video.fileId.fileId, hasSpoiler == true, selfClosing = false, caption = caption) } } @@ -560,13 +659,15 @@ data class RichBlockVoiceNote( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = richMediaMarkdown(voiceNote.fileId.fileId, caption) - override val html: String - get() = richMediaHtml("audio", voiceNote.fileId.fileId, spoiler = false, selfClosing = false, caption = caption) + override val markdown: String = markdown(voiceNote, caption) + override val html: String = html(voiceNote, caption) companion object { const val TYPE = "voice_note" + fun markdown(voiceNote: VoiceFile, caption: RichBlockCaption?): String = + richMediaMarkdown(voiceNote.fileId.fileId, caption) + fun html(voiceNote: VoiceFile, caption: RichBlockCaption?): String = + richMediaHtml("audio", voiceNote.fileId.fileId, spoiler = false, selfClosing = false, caption = caption) } } @@ -584,12 +685,12 @@ data class RichBlockThinking( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "${text.markdown}" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "thinking" + fun markdown(text: RichText): String = "${text.markdown}" + fun html(text: RichText): String = "${text.html}" } } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichText.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichText.kt index db75fb6ccb..00dec95955 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichText.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichText.kt @@ -38,10 +38,13 @@ sealed interface RichText { data class RichTextPlain( val text: String ) : RichText { - override val markdown: String - get() = text.escapeRichMarkdown() - override val html: String - get() = text.toHtml() + override val markdown: String = markdown(text) + override val html: String = html(text) + + companion object { + fun markdown(text: String): String = text.escapeRichMarkdown() + fun html(text: String): String = text.toHtml() + } } /** @@ -51,10 +54,13 @@ data class RichTextPlain( data class RichTextGroup( val parts: List ) : RichText { - override val markdown: String - get() = parts.joinToString(separator = "") { it.markdown } - override val html: String - get() = parts.joinToString(separator = "") { it.html } + override val markdown: String = markdown(parts) + override val html: String = html(parts) + + companion object { + fun markdown(parts: List): String = parts.joinToString(separator = "") { it.markdown } + fun html(parts: List): String = parts.joinToString(separator = "") { it.html } + } } /** diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichTextEntities.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichTextEntities.kt index 67f77caa8c..d607b020fb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichTextEntities.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/rich/RichTextEntities.kt @@ -41,13 +41,13 @@ data class RichTextBold( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "**${text.markdown}**" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "bold" + fun markdown(text: RichText): String = "**${text.markdown}**" + fun html(text: RichText): String = "${text.html}" } } @@ -65,13 +65,13 @@ data class RichTextItalic( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "*${text.markdown}*" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "italic" + fun markdown(text: RichText): String = "*${text.markdown}*" + fun html(text: RichText): String = "${text.html}" } } @@ -89,13 +89,13 @@ data class RichTextUnderline( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "${text.markdown}" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "underline" + fun markdown(text: RichText): String = "${text.markdown}" + fun html(text: RichText): String = "${text.html}" } } @@ -113,13 +113,13 @@ data class RichTextStrikethrough( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "~~${text.markdown}~~" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "strikethrough" + fun markdown(text: RichText): String = "~~${text.markdown}~~" + fun html(text: RichText): String = "${text.html}" } } @@ -137,13 +137,13 @@ data class RichTextSpoiler( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "||${text.markdown}||" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "spoiler" + fun markdown(text: RichText): String = "||${text.markdown}||" + fun html(text: RichText): String = "${text.html}" } } @@ -161,13 +161,13 @@ data class RichTextSubscript( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "${text.markdown}" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "subscript" + fun markdown(text: RichText): String = "${text.markdown}" + fun html(text: RichText): String = "${text.html}" } } @@ -185,13 +185,13 @@ data class RichTextSuperscript( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "${text.markdown}" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "superscript" + fun markdown(text: RichText): String = "${text.markdown}" + fun html(text: RichText): String = "${text.html}" } } @@ -209,13 +209,13 @@ data class RichTextMarked( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "==${text.markdown}==" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "marked" + fun markdown(text: RichText): String = "==${text.markdown}==" + fun html(text: RichText): String = "${text.html}" } } @@ -233,13 +233,13 @@ data class RichTextCode( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "`${text.source}`" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "code" + fun markdown(text: RichText): String = "`${text.source}`" + fun html(text: RichText): String = "${text.html}" } } @@ -261,13 +261,15 @@ data class RichTextDateTime( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "![${text.markdown}](tg://time?unix=$unixTime&format=$dateTimeFormat)" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, unixTime, dateTimeFormat) + override val html: String = html(text, unixTime, dateTimeFormat) companion object { const val TYPE = "date_time" + fun markdown(text: RichText, unixTime: Long, dateTimeFormat: String): String = + "![${text.markdown}](tg://time?unix=$unixTime&format=$dateTimeFormat)" + fun html(text: RichText, unixTime: Long, dateTimeFormat: String): String = + "${text.html}" } } @@ -287,13 +289,15 @@ data class RichTextTextMention( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "[${text.markdown}]($internalUserLinkBeginning${user.id.chatId.long})" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, user) + override val html: String = html(text, user) companion object { const val TYPE = "text_mention" + fun markdown(text: RichText, user: User): String = + "[${text.markdown}]($internalUserLinkBeginning${user.id.chatId.long})" + fun html(text: RichText, user: User): String = + "${text.html}" } } @@ -313,13 +317,15 @@ data class RichTextCustomEmoji( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "![${alternativeText.escapeRichMarkdown()}](tg://emoji?id=${customEmojiId.string})" - override val html: String - get() = "${alternativeText.toHtml()}" + override val markdown: String = markdown(customEmojiId, alternativeText) + override val html: String = html(customEmojiId, alternativeText) companion object { const val TYPE = "custom_emoji" + fun markdown(customEmojiId: CustomEmojiId, alternativeText: String): String = + "![${alternativeText.escapeRichMarkdown()}](tg://emoji?id=${customEmojiId.string})" + fun html(customEmojiId: CustomEmojiId, alternativeText: String): String = + "${alternativeText.toHtml()}" } } @@ -337,13 +343,13 @@ data class RichTextMathematicalExpression( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "\$$expression\$" - override val html: String - get() = "$expression" + override val markdown: String = markdown(expression) + override val html: String = html(expression) companion object { const val TYPE = "mathematical_expression" + fun markdown(expression: String): String = "\$$expression\$" + fun html(expression: String): String = "$expression" } } @@ -363,13 +369,13 @@ data class RichTextUrl( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "[${text.markdown}]($url)" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, url) + override val html: String = html(text, url) companion object { const val TYPE = "url" + fun markdown(text: RichText, url: String): String = "[${text.markdown}]($url)" + fun html(text: RichText, url: String): String = "${text.html}" } } @@ -389,13 +395,13 @@ data class RichTextEmailAddress( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "[${text.markdown}](mailto:$emailAddress)" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, emailAddress) + override val html: String = html(text, emailAddress) companion object { const val TYPE = "email_address" + fun markdown(text: RichText, emailAddress: String): String = "[${text.markdown}](mailto:$emailAddress)" + fun html(text: RichText, emailAddress: String): String = "${text.html}" } } @@ -415,13 +421,13 @@ data class RichTextPhoneNumber( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "[${text.markdown}](tel:$phoneNumber)" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, phoneNumber) + override val html: String = html(text, phoneNumber) companion object { const val TYPE = "phone_number" + fun markdown(text: RichText, phoneNumber: String): String = "[${text.markdown}](tel:$phoneNumber)" + fun html(text: RichText, phoneNumber: String): String = "${text.html}" } } @@ -441,13 +447,13 @@ data class RichTextBankCardNumber( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = text.markdown - override val html: String - get() = text.html + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "bank_card_number" + fun markdown(text: RichText): String = text.markdown + fun html(text: RichText): String = text.html } } @@ -467,13 +473,13 @@ data class RichTextMention( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = text.markdown - override val html: String - get() = text.html + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "mention" + fun markdown(text: RichText): String = text.markdown + fun html(text: RichText): String = text.html } } @@ -493,13 +499,13 @@ data class RichTextHashtag( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = text.markdown - override val html: String - get() = text.html + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "hashtag" + fun markdown(text: RichText): String = text.markdown + fun html(text: RichText): String = text.html } } @@ -519,13 +525,13 @@ data class RichTextCashtag( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = text.markdown - override val html: String - get() = text.html + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "cashtag" + fun markdown(text: RichText): String = text.markdown + fun html(text: RichText): String = text.html } } @@ -545,13 +551,13 @@ data class RichTextBotCommand( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = text.markdown - override val html: String - get() = text.html + override val markdown: String = markdown(text) + override val html: String = html(text) companion object { const val TYPE = "bot_command" + fun markdown(text: RichText): String = text.markdown + fun html(text: RichText): String = text.html } } @@ -569,13 +575,13 @@ data class RichTextAnchor( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "" - override val html: String - get() = "" + override val markdown: String = markdown(name) + override val html: String = html(name) companion object { const val TYPE = "anchor" + fun markdown(name: String): String = "" + fun html(name: String): String = "" } } @@ -595,13 +601,13 @@ data class RichTextAnchorLink( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "[${text.markdown}](#$anchorName)" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, anchorName) + override val html: String = html(text, anchorName) companion object { const val TYPE = "anchor_link" + fun markdown(text: RichText, anchorName: String): String = "[${text.markdown}](#$anchorName)" + fun html(text: RichText, anchorName: String): String = "${text.html}" } } @@ -621,13 +627,13 @@ data class RichTextReference( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "${text.markdown}" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, name) + override val html: String = html(text, name) companion object { const val TYPE = "reference" + fun markdown(text: RichText, name: String): String = "${text.markdown}" + fun html(text: RichText, name: String): String = "${text.html}" } } @@ -647,12 +653,12 @@ data class RichTextReferenceLink( @SerialName(typeField) override val type: String = TYPE - override val markdown: String - get() = "[${text.markdown}](#$referenceName)" - override val html: String - get() = "${text.html}" + override val markdown: String = markdown(text, referenceName) + override val html: String = html(text, referenceName) companion object { const val TYPE = "reference_link" + fun markdown(text: RichText, referenceName: String): String = "[${text.markdown}](#$referenceName)" + fun html(text: RichText, referenceName: String): String = "${text.html}" } }