Skip to content

Commit be71db5

Browse files
committed
export some extra entity functions that don't need to be methods
1 parent 75a452b commit be71db5

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

entities.go

+29-20
Original file line numberDiff line numberDiff line change
@@ -7,46 +7,55 @@ type ParsedMessageEntity struct {
77
Text string `json:"text"`
88
}
99

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)))
1313
}
1414

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)
1818
}
1919

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 {
2424
if _, ok := accepted[ent.Type]; ok || accepted == nil {
2525
out = append(out, parseEntity(ent, utf16Text))
2626
}
2727
}
2828
return out
2929
}
3030

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.
3247
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)
4049
}
4150

4251
// ParseEntity parses a single message text entity to populate text contents, URL, and offsets in UTF8.
4352
func (m Message) ParseEntity(entity MessageEntity) ParsedMessageEntity {
44-
return parseEntity(entity, utf16.Encode([]rune(m.Text)))
53+
return ParseEntity(m.Text, entity)
4554
}
4655

4756
// ParseCaptionEntity parses a single message caption entity to populate text contents, URL, and offsets in UTF8.
4857
func (m Message) ParseCaptionEntity(entity MessageEntity) ParsedMessageEntity {
49-
return parseEntity(entity, utf16.Encode([]rune(m.Caption)))
58+
return ParseEntity(m.Caption, entity)
5059
}
5160

5261
func parseEntity(entity MessageEntity, utf16Text []uint16) ParsedMessageEntity {

0 commit comments

Comments
 (0)