@@ -7,46 +7,55 @@ type ParsedMessageEntity struct {
7
7
Text string `json:"text"`
8
8
}
9
9
10
- // ParseEntities calls Message.ParseEntity on all message text entities .
11
- func ( m Message ) ParseEntities () ( out [] ParsedMessageEntity ) {
12
- return m . ParseEntityTypes ( nil )
10
+ // ParseEntity parses a single MessageEntity into a ParsedMessageEntity .
11
+ func ParseEntity ( text string , entity MessageEntity ) ParsedMessageEntity {
12
+ return parseEntity ( entity , utf16 . Encode ([] rune ( text )) )
13
13
}
14
14
15
- // ParseCaptionEntities calls Message.ParseEntity on all message caption entities .
16
- func ( m Message ) ParseCaptionEntities ( ) (out []ParsedMessageEntity ) {
17
- return m . ParseCaptionEntityTypes ( nil )
15
+ // ParseEntities parses all MessageEntity items into a list of ParsedMessageEntity .
16
+ func ParseEntities ( text string , entities [] MessageEntity ) (out []ParsedMessageEntity ) {
17
+ return ParseEntityTypes ( text , entities , nil )
18
18
}
19
19
20
- // ParseEntityTypes calls Message.ParseEntity on a subset of message text entities .
21
- func ( m Message ) ParseEntityTypes ( accepted map [string ]struct {}) (out []ParsedMessageEntity ) {
22
- utf16Text := utf16 .Encode ([]rune (m . Text ))
23
- for _ , ent := range m . Entities {
20
+ // ParseEntityTypes parses a subset of MessageEntity items into a list of ParsedMessageEntity .
21
+ func ParseEntityTypes ( text string , entities [] MessageEntity , accepted map [string ]struct {}) (out []ParsedMessageEntity ) {
22
+ utf16Text := utf16 .Encode ([]rune (text ))
23
+ for _ , ent := range entities {
24
24
if _ , ok := accepted [ent .Type ]; ok || accepted == nil {
25
25
out = append (out , parseEntity (ent , utf16Text ))
26
26
}
27
27
}
28
28
return out
29
29
}
30
30
31
- // ParseCaptionEntityTypes calls Message.ParseEntity on a subset of message caption entities.
31
+ // ParseEntities parses all message text entities into a list of ParsedMessageEntity.
32
+ func (m Message ) ParseEntities () (out []ParsedMessageEntity ) {
33
+ return m .ParseEntityTypes (nil )
34
+ }
35
+
36
+ // ParseCaptionEntities parses all message caption entities into a list of ParsedMessageEntity.
37
+ func (m Message ) ParseCaptionEntities () (out []ParsedMessageEntity ) {
38
+ return m .ParseCaptionEntityTypes (nil )
39
+ }
40
+
41
+ // ParseEntityTypes parses a subset of message text entities into a list of ParsedMessageEntity.
42
+ func (m Message ) ParseEntityTypes (accepted map [string ]struct {}) (out []ParsedMessageEntity ) {
43
+ return ParseEntityTypes (m .Text , m .Entities , accepted )
44
+ }
45
+
46
+ // ParseCaptionEntityTypes parses a subset of message caption entities into a list of ParsedMessageEntity.
32
47
func (m Message ) ParseCaptionEntityTypes (accepted map [string ]struct {}) (out []ParsedMessageEntity ) {
33
- utf16Caption := utf16 .Encode ([]rune (m .Caption ))
34
- for _ , ent := range m .CaptionEntities {
35
- if _ , ok := accepted [ent .Type ]; ok || accepted == nil {
36
- out = append (out , parseEntity (ent , utf16Caption ))
37
- }
38
- }
39
- return out
48
+ return ParseEntityTypes (m .Caption , m .CaptionEntities , accepted )
40
49
}
41
50
42
51
// ParseEntity parses a single message text entity to populate text contents, URL, and offsets in UTF8.
43
52
func (m Message ) ParseEntity (entity MessageEntity ) ParsedMessageEntity {
44
- return parseEntity ( entity , utf16 . Encode ([] rune ( m .Text )) )
53
+ return ParseEntity ( m .Text , entity )
45
54
}
46
55
47
56
// ParseCaptionEntity parses a single message caption entity to populate text contents, URL, and offsets in UTF8.
48
57
func (m Message ) ParseCaptionEntity (entity MessageEntity ) ParsedMessageEntity {
49
- return parseEntity ( entity , utf16 . Encode ([] rune ( m .Caption )) )
58
+ return ParseEntity ( m .Caption , entity )
50
59
}
51
60
52
61
func parseEntity (entity MessageEntity , utf16Text []uint16 ) ParsedMessageEntity {
0 commit comments