serch emoji and add them unicod
This commit is contained in:
parent
7526915645
commit
e7a06144ae
1
go.mod
1
go.mod
@ -30,6 +30,7 @@ require (
|
||||
github.com/klauspost/compress v1.17.6 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
|
||||
github.com/kr/pretty v0.1.0 // indirect
|
||||
github.com/kyokomi/emoji v2.2.4+incompatible // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||
|
2
go.sum
2
go.sum
@ -58,6 +58,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/kyokomi/emoji v2.2.4+incompatible h1:np0woGKwx9LiHAQmwZx79Oc0rHpNw3o+3evou4BEPv4=
|
||||
github.com/kyokomi/emoji v2.2.4+incompatible/go.mod h1:mZ6aGCD7yk8j6QY6KICwnZ2pxoszVseX1DNoGtU2tBA=
|
||||
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
||||
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
|
@ -2,8 +2,11 @@ package tools
|
||||
|
||||
import (
|
||||
"amocrm/internal/models"
|
||||
"fmt"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
||||
"strings"
|
||||
"time"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
func ToPipeline(amoPipelines []models.Pipeline) []model.Pipeline {
|
||||
@ -84,7 +87,7 @@ func ConstructField(allAnswers []model.ResultAnswer, result model.AmoUsersTrueRe
|
||||
for _, data := range allAnswers {
|
||||
if fieldID, ok := rule.Questionid[int(data.QuestionID)]; ok {
|
||||
values := entityFieldsMap[entityType][fieldID]
|
||||
values = append(values, models.Values{Value: data.Content})
|
||||
values = append(values, models.Values{Value: emojiUnicode(data.Content)})
|
||||
entityFieldsMap[entityType][fieldID] = values
|
||||
}
|
||||
}
|
||||
@ -135,3 +138,48 @@ func ConstructField(allAnswers []model.ResultAnswer, result model.AmoUsersTrueRe
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func isEmoji(r rune) bool {
|
||||
// https://symbl.cc/ru/unicode/blocks/emoticons/
|
||||
|
||||
return (r >= 0x1F600 && r <= 0x1F64F) || // эмотикоины
|
||||
(r >= 0x1F650 && r <= 0x1F67F) || // орнаментные символы
|
||||
(r >= 0x1F680 && r <= 0x1F6FF) || // Транспортные и картографические символы
|
||||
(r >= 0x1F700 && r <= 0x1F77F) || // Алхимические символы
|
||||
(r >= 0x1F780 && r <= 0x1F7FF) || // Расширенные геометрические фигуры
|
||||
(r >= 0x1F800 && r <= 0x1F8FF) || // Дополнительные стрелки — С
|
||||
(r >= 0x1F900 && r <= 0x1F9FF) || // Дополнительные символы и пиктограммы
|
||||
(r >= 0x1FA00 && r <= 0x1FA6F) || // Шахматные символы
|
||||
(r >= 0x1FA70 && r <= 0x1FAFF) || // Расширенные символы и пиктограммы — A
|
||||
(r >= 0x1FB00 && r <= 0x1FBFF) || // Символы наследия вычислительной техники
|
||||
(r >= 0x20000 && r <= 0x2A6DF) || // Унифицированные идеограммы ККЯ. Расширение B
|
||||
(r >= 0x2A700 && r <= 0x2B73F) || // Унифицированные идеограммы ККЯ. Расширение C
|
||||
(r >= 0x2B740 && r <= 0x2B81F) || // Унифицированные идеограммы ККЯ. Расширение D
|
||||
(r >= 0x2B820 && r <= 0x2CEAF) || // Унифицированные идеограммы ККЯ. Расширение E
|
||||
(r >= 0x2CEB0 && r <= 0x2EBEF) || // Унифицированные идеограммы ККЯ. Расширение F
|
||||
(r >= 0x2EBF0 && r <= 0x2EE5F) || // CJK Unified Ideographs Extension I
|
||||
(r >= 0x2F800 && r <= 0x2FA1F) || // Дополнение к совместимым идеограммам ККЯ
|
||||
(r >= 0x30000 && r <= 0x3134F) || // Унифицированные идеограммы ККЯ. Расширение G
|
||||
(r >= 0x31350 && r <= 0x323AF) || // Унифицированные идеограммы ККЯ. Расширение H
|
||||
(r >= 0xE0000 && r <= 0xE007F) || // Теги
|
||||
(r >= 0xE0100 && r <= 0xE01EF) // Дополнение к селекторам вариантов начертания
|
||||
}
|
||||
|
||||
func emojiUnicode(text string) string {
|
||||
var result strings.Builder
|
||||
for len(text) > 0 {
|
||||
r, size := utf8.DecodeRuneInString(text)
|
||||
if size == -1 {
|
||||
result.WriteString(text[:1])
|
||||
text = text[1:]
|
||||
} else {
|
||||
if isEmoji(r) {
|
||||
result.WriteString(fmt.Sprintf(`"0x%x"`, r))
|
||||
} else {
|
||||
result.WriteRune(r)
|
||||
}
|
||||
text = text[size:]
|
||||
}
|
||||
}
|
||||
return result.String()
|
||||
}
|
||||
|
@ -82,7 +82,6 @@ func (wc *PostFields) startFetching(ctx context.Context) {
|
||||
}
|
||||
|
||||
leadFields, contactData, companyData := tools.ConstructField(allAnswers, result)
|
||||
|
||||
deal.CustomFieldsValues = leadFields
|
||||
deal.Embed.Contact = contactData
|
||||
deal.Embed.Company = companyData
|
||||
|
Loading…
Reference in New Issue
Block a user